<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>ITSMPublicCMDB</Name>
    <Version>11.0.4</Version>
    <Vendor>Rother OSS GmbH</Vendor>
    <URL>https://otobo.io/</URL>
    <License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License>
    <ChangeLog Date="2026-07-28 13:53:07" Version="11.0.4">Update to CMDB 11.0.15.</ChangeLog>
    <ChangeLog Date="2025-06-04 13:13:55" Version="11.0.3">Update to CMDB 11.0.7.</ChangeLog>
    <ChangeLog Date="2025-02-06 10:07:54" Version="11.0.2">- Make class, name and number optional for the public ci search.
- Direct redirect to CI if search only has one return.
- Bugfixes</ChangeLog>
    <ChangeLog Date="2024-11-21 09:37:22" Version="11.0.1">Initial Release.</ChangeLog>
    <Description Lang="en">The OTOBO::ITSM Public CMDB package.</Description>
    <Description Lang="de">Das OTOBO::ITSM Public CMDB Paket.</Description>
    <Description Lang="es">El paquete OTOBO::ITSM Public CMDB.</Description>
    <Description Lang="hu">Az OTOBO::ITSM Public CMDB csomag.</Description>
    <Framework>11.0.x</Framework>
    <PackageRequired Version="11.0.1">ITSMConfigurationManagement</PackageRequired>
    <BuildCommitID>4ac3c250a367e50710085ce32bb818975e336034</BuildCommitID>
    <BuildDate>2026-07-28 13:53:11</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Output/HTML/Layout/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0lUU01Db25maWdJdGVtLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6SVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6SVRTTUNvbmZpZ0l0ZW0gLSBhbGwgQ29uZmlnSXRlbS1yZWxhdGVkIEhUTUwgZnVuY3Rpb25zCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBJVFNNIENvbmZpZ3VyYXRpb24gTWFuYWdlbWVudC1yZWxhdGVkIEhUTUwgZnVuY3Rpb25zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIElUU01Db25maWdJdGVtT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCnJldHVybnMgYW4gb3V0cHV0IHN0cmluZwoKICAgIG15ICRTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbU91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICAgICAgUHJpbnQgPT4gMSwgICAgICAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDApCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRTZWxmLT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHlwZX0sCiAgICApOwoKICAgIHJldHVybiAnJyBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBnZW5lcmF0ZSBvdXRwdXQgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSglUGFyYW0pOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1Gb3JtRGF0YUdldCgpCgpyZXR1cm5zIHRoZSB2YWx1ZXMgZnJvbSB0aGUgaHRtbCBmb3JtIGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgICAgICAgICAgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gICAgICAgICA9PiAkSXRlbVJlZiwKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBJVFNNQ29uZmlnSXRlbUZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtIENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkU2VsZi0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9LAogICAgKTsKCiAgICByZXR1cm4ge30gaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJEZvcm1EYXRhID0gJEJhY2tlbmRPYmplY3QtPkZvcm1EYXRhR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRGb3JtRGF0YTsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtSW5wdXRDcmVhdGUoKQoKcmV0dXJucyBhIGlucHV0IGZpZWxkIGh0bWwgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1JbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkU2VsZi0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9LAogICAgKTsKCiAgICByZXR1cm4gJycgaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgbG9va3VwIGl0ZW0gdmFsdWUKICAgIG15ICRTdHJpbmcgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtU2VhcmNoRm9ybURhdGFHZXQoKQoKcmV0dXJucyB0aGUgdmFsdWVzIGZyb20gdGhlIHNlYXJjaCBodG1sIGZvcm0KCiAgICBteSAkQXJyYXlSZWYgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbVNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1TZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkU2VsZi0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9LAogICAgKTsKCiAgICByZXR1cm4gW10gaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJFZhbHVlcyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwoKICAgIHJldHVybiAkVmFsdWVzOwp9Cgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1TZWFyY2hJbnB1dENyZWF0ZSgpCgpyZXR1cm5zIGEgc2VhcmNoIGlucHV0IGZpZWxkIGh0bWwgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtU2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJVFNNQ29uZmlnSXRlbVNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRTZWxmLT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHlwZX0sCiAgICApOwoKICAgIHJldHVybiAnJyBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBsb29rdXAgaXRlbSB2YWx1ZQogICAgbXkgJFN0cmluZyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSglUGFyYW0pOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgX0lUU01Mb2FkTGF5b3V0QmFja2VuZCgpCgpsb2FkIGEgaW5wdXQgdHlwZSBiYWNrZW5kIG1vZHVsZQoKICAgICRCYWNrZW5kT2JqZWN0ID0gJExheW91dE9iamVjdC0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICdHZW5lcmFsQ2F0YWxvZycsCiAgICApOwoKPWN1dAoKc3ViIF9JVFNNTG9hZExheW91dEJhY2tlbmQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsb2cgb2JqZWN0CiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIGlmICggISRQYXJhbXtUeXBlfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFR5cGUhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkR2VuZXJpY01vZHVsZSA9ICJLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dCRQYXJhbXtUeXBlfSI7CgogICAgIyBsb2FkIHRoZSBiYWNrZW5kIG1vZHVsZQogICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgkR2VuZXJpY01vZHVsZSkgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCBiYWNrZW5kIG1vZHVsZSAkUGFyYW17VHlwZX0hIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY3JlYXRlIG5ldyBpbnN0YW5jZQogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkR2VuZXJpY01vZHVsZS0+bmV3KAogICAgICAgICV7JFNlbGZ9LAogICAgICAgICVQYXJhbSwKICAgICAgICBMYXlvdXRPYmplY3QgPT4gJFNlbGYsCiAgICApOwoKICAgIGlmICggISRCYWNrZW5kT2JqZWN0ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBiYWNrZW5kIG1vZHVsZSAkUGFyYW17VHlwZX0hIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJEJhY2tlbmRPYmplY3Q7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbUxpc3RTaG93KCkKCj1mb3Igc3RvcHdvcmRzIENNREIKClJldHVybnMgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBzb3J0IGFuZCBwYWdpbmF0aW9uIGNhcGFiaWxpdGllcy4KClRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBMPEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXRUaWNrZXQ6OlRpY2tldExpc3RTaG93KCk+CmluIEY8S2VybmVsL091dHB1dC9IVE1ML0xheW91dFRpY2tldC5wbT4uCgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiAkQ29uZmlnSXRlbUlEc1JlZiwgICAgICAgICAgICAgICAgICAjIHRvdGFsIGxpc3Qgb2YgY29uZmlnIGl0ZW0gaWRzLCB0aGF0IGNhbiBiZSBsaXN0ZWQKICAgICAgICBUb3RhbCAgICAgICAgID0+IHNjYWxhciBAeyAkQ29uZmlnSXRlbUlEc1JlZiB9LCAgICAgICMgdG90YWwgbnVtYmVyIG9mIGxpc3QgaXRlbXMsIGNvbmZpZyBpdGVtcyBpbiB0aGlzIGNhc2UKICAgICAgICBWaWV3ICAgICAgICAgID0+ICRTZWxmLT57Vmlld30sICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwsIHRoZSBkZWZhdWx0IHZhbHVlIGlzICdTbWFsbCcKICAgICAgICBGaWx0ZXIgICAgICAgID0+ICdBbGwnLAogICAgICAgIEZpbHRlcnMgICAgICAgPT4gXCVOYXZCYXJGaWx0ZXIsCiAgICAgICAgRmlsdGVyTGluayAgICA9PiAkTGlua0ZpbHRlciwKICAgICAgICBUaXRsZU5hbWUgICAgID0+ICdPdmVydmlldzogQ29uZmlnIEl0ZW06IENvbXB1dGVyJywKICAgICAgICBUaXRsZVZhbHVlICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICBFbnYgICAgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgPT4gJExpbmtTb3J0LAoKIyBSb3RoZXIgT1NTIC8gSVRTTSBQdWJsaWMgQ01EQgojICAgICAgICAgRnJvbnRlbmQgICAgICA9PiAnQWdlbnQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgKEFnZW50fEN1c3RvbWVyKSwgZGVmYXVsdDogQWdlbnQsIGluZGljYXRlcyBmcm9tIHdoaWNoIGZyb250ZW5kIHRoaXMgZnVuY3Rpb24gd2FzIGNhbGxlZAogICAgICAgIEZyb250ZW5kICAgICAgPT4gJ0FnZW50JywgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIChBZ2VudHxDdXN0b21lcnxQdWJsaWMpLCBkZWZhdWx0OiBBZ2VudCwgaW5kaWNhdGVzIGZyb20gd2hpY2ggZnJvbnRlbmQgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkCiMgRU8gSVRTTSBQdWJsaWMgQ01EQgoKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGZyb250ZW5kIHBlciBkZWZhdWx0IHRvIGFnZW50CiAgICAkUGFyYW17RnJvbnRlbmR9IC8vPSAnQWdlbnQnOwoKICAgICMgdGFrZSBvYmplY3QgcmVmIHRvIGxvY2FsLCByZW1vdmUgaXQgZnJvbSAlUGFyYW0gKHByZXZlbnQgbWVtb3J5IGxlYWspCiAgICBteSAkRW52ID0gZGVsZXRlICRQYXJhbXtFbnZ9OwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFBhcmFte1ZpZXd9ICYmICRTZWxmLT57ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmlldyBtb2RlIHRvICdzbWFsbCcKICAgIG15ICRWaWV3ID0gJFBhcmFte1ZpZXd9IHx8ICdTbWFsbCc7CgogICAgIyBzdG9yZSBsYXRlc3QgdmlldyBtb2RlCiMgUm90aGVyIE9TUyAvIElUU00gUHVibGljIENNREIKIyAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKIyAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiMgICAgICAgICBLZXkgICAgICAgPT4gJ1VzZXJJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259LAojICAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAojICAgICApOwogICAgaWYgKCAkUGFyYW17RnJvbnRlbmR9IG5lICdQdWJsaWMnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVmlldywKICAgICAgICApOwogICAgfQojIEVPIElUU00gUHVibGljIENNREIKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcyBpZiBuZWVkZWQKICAgIG15ICRLZXkgPSAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn07CgojIFJvdGhlciBPU1MgLyBJVFNNIFB1YmxpYyBDTURCCiMgICAgIGlmICggJFBhcmFte0Zyb250ZW5kfSBuZSAnQ3VzdG9tZXInICkgewogICAgaWYgKCAkUGFyYW17RnJvbnRlbmR9IG5lICdDdXN0b21lcicgJiYgJFBhcmFte0Zyb250ZW5kfSBuZSAnUHVibGljJyApIHsKIyBFTyBJVFNNIFB1YmxpYyBDTURCCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgJiYgKCAkU2VsZi0+eyRLZXl9IC8vICcnICkgbmUgJFZpZXcgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRWaWV3LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBiYWNrZW5kIGZyb20gY29uZmlnCiMgUm90aGVyIE9TUyAvIElUU00gUHVibGljIENNREIKIyAgICAgbXkgJEJhY2tlbmRzCiMgICAgICAgICA9ICRQYXJhbXtGcm9udGVuZH0gZXEgJ0FnZW50JyA/ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldycpIDogJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVyT3ZlcnZpZXcnKTsKICAgIG15ICRCYWNrZW5kczsKICAgIGlmICggJFBhcmFte0Zyb250ZW5kfSBlcSAnQWdlbnQnICkgewogICAgICAgICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldycpOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RnJvbnRlbmR9IGVxICdDdXN0b21lcicgKSB7CiAgICAgICAgJEJhY2tlbmRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVyT3ZlcnZpZXcnKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICMgcHVibGljIGZyb250ZW5kCiAgICAgICAgJEJhY2tlbmRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY092ZXJ2aWV3Jyk7CiAgICB9CiMgRU8gSVRTTSBQdWJsaWMgQ01EQgogICAgaWYgKCAhJEJhY2tlbmRzICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTmVlZCBjb25maWcgb3B0aW9uIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICk7CiAgICB9CiAgICBpZiAoIHJlZiAkQmFja2VuZHMgbmUgJ0hBU0gnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ29uZmlnIG9wdGlvbiBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIEhBU0ggcmVmIScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHNlbGVjdGVkIHZpZXcgaXMgYXZhaWxhYmxlCiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CgogICAgICAgICMgdHJ5IHRvIGZpbmQgZmFsbGJhY2ssIHRha2UgZmlyc3QgY29uZmlndXJlZCB2aWV3IG1vZGUKICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gQ29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdmlldyBtb2RlICRWaWV3LCB0b29rICRLZXkgaW5zdGVhZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkVmlldyA9ICRLZXk7CiAgICAgICAgICAgIGxhc3QgS0VZOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVmlldycsCiAgICAgICAgVmFsdWUgPT4gJFZpZXcsCiAgICApOwoKICAgICMgbG9hZCBvdmVydmlldyBiYWNrZW5kIG1vZHVsZQogICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfSApICkgewogICAgICAgIHJldHVybiAkRW52LT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigpOwogICAgfQogICAgbXkgJE9iamVjdCA9ICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0tPm5ldyggJXskRW52fSApOwogICAgcmV0dXJuIGlmICEkT2JqZWN0OwoKICAgICMgcmV0cmlldmUgZmlsdGVyIHZhbHVlcwogICAgaWYgKCAkUGFyYW17RmlsdGVyQ29udGVudE9ubHl9ICkgewogICAgICAgIHJldHVybiAkT2JqZWN0LT5GaWx0ZXJDb250ZW50KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJ1biBhY3Rpb24gcm93IGJhY2tlbmQgbW9kdWxlCiAgICAkUGFyYW17QWN0aW9uUm93fSA9ICRPYmplY3QtPkFjdGlvblJvdygKICAgICAgICAlUGFyYW0sCiAgICAgICAgQ29uZmlnID0+ICRCYWNrZW5kcy0+eyRWaWV3fSwKICAgICk7CgogICAgIyBydW4gb3ZlcnZpZXcgYmFja2VuZCBtb2R1bGUKICAgICRQYXJhbXtTb3J0T3JkZXJCYXJ9ID0gJE9iamVjdC0+U29ydE9yZGVyQmFyKAogICAgICAgICVQYXJhbSwKICAgICAgICBDb25maWcgPT4gJEJhY2tlbmRzLT57JFZpZXd9LAogICAgKTsKCiAgICAjIGNoZWNrIHN0YXJ0IG9wdGlvbiwgaWYgaGlnaGVyIHRoZW4gdGlja2V0cyBhdmFpbGFibGUsIHNldAogICAgIyBpdCB0byB0aGUgbGFzdCB0aWNrZXQgcGFnZSAoVGhhbmtzIHRvIFN0ZWZhbiBTY2htaWR0ISkKICAgIG15ICRTdGFydEhpdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CiAgICBteSAkR3JvdXAgICAgICAgICAgICAgICAgICAgPSAnQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgY2FsY3VsYXRlIG1heC4gc2hvd24gcGVyIHBhZ2UKICAgIGlmICggJFN0YXJ0SGl0ID4gJFBhcmFte1RvdGFsfSApIHsKICAgICAgICBteSAkUGFnZXMgPSBpbnQoICggJFBhcmFte1RvdGFsfSAvICRQYWdlU2hvd24gKSArIDAuOTk5OTkgKTsKICAgICAgICAkU3RhcnRIaXQgPSAoICggJFBhZ2VzIC0gMSApICogJFBhZ2VTaG93biApICsgMTsKICAgIH0KCiAgICAjIGJ1aWxkIG5hdiBiYXIKICAgIG15ICRMaW1pdCAgID0gJFBhcmFte0xpbWl0fSB8fCAyMF8wMDA7CiAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPScgLiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICAgICAgSURQcmVmaXggID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biB0aWNrZXQgcGVyIHBhZ2UKICAgICRQYXJhbXtSZXF1ZXN0ZWRVUkx9ICAgID0gJFBhcmFte1JlcXVlc3RlZFVSTH0gfHwgIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07JFBhcmFte0xpbmtQYWdlfSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkU2VsZi0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5LAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNWYWx1ZScsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgbmF2IGJhciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgb3ZlcnZpZXcKICAgICRQYXJhbXtWaWV3fSA9ICRWaWV3OwogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmaWx0ZXIgc2VsZWN0aW9uCiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9ICkgewogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7ICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVyJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICBpZiAoICRDb3VudCA9PSBzY2FsYXIgQE5hdkJhckZpbHRlcnMgKSB7CiAgICAgICAgICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXItPntDU1N9ID0gJ0xhc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskQ2F0ZWdvcnlGaWx0ZXJ9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q2F0ZWdvcnlGaWx0ZXJ9ICYmICRDYXRlZ29yeUZpbHRlci0+e0NhdGVnb3J5RmlsdGVyfSBlcSAkUGFyYW17Q2F0ZWdvcnlGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRDYXRlZ29yeUZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JENhdGVnb3J5RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHZpZXcgbW9kZQogICAgZm9yIG15ICRCYWNrZW5kICgKICAgICAgICBzb3J0IHsgJEJhY2tlbmRzLT57JGF9LT57TW9kdWxlUHJpb3JpdHl9IDw9PiAkQmFja2VuZHMtPnskYn0tPntNb2R1bGVQcmlvcml0eX0gfQogICAgICAgIGtleXMgJXskQmFja2VuZHN9CiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICRWaWV3IGVxICRCYWNrZW5kICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCVQYWdlTmF2KSB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VOYXZCYXInLAogICAgICAgICAgICBEYXRhID0+IFwlUGFnZU5hdiwKICAgICAgICApOwoKICAgICAgICAjIGRvbid0IHNob3cgY29udGV4dCBzZXR0aW5ncyBpbiBBSkFYIGNhc2UgKGUuIGcuIGluIGN1c3RvbWVyIHRpY2tldCBoaXN0b3J5KSwKICAgICAgICAjICAgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgY29sdW1uIGZpbHRlciBwcmVmZXJlbmNlcwogICAgICAgICAgICBpZiAoICRWaWV3IGVxICdTbWFsbCcgKSB7CgogICAgICAgICAgICAgICAgIyBzZXQgcHJlZmVyZW5jZXMga2V5cwogICAgICAgICAgICAgICAgbXkgJFByZWZLZXlDb2x1bW5zID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkRW52LT57QWN0aW9ufSAuICctJyAuICRQYXJhbXtGaWx0ZXJ9OwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIGV4dHJhIG5lZWRlZCBvYmplY3RzCiAgICAgICAgICAgICAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgICAgICAgICAgICAgIyBjb25maWd1cmUgY29sdW1ucwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkID0gQHsgJE9iamVjdC0+e0NvbHVtbnNFbmFibGVkfSB9OwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNBdmFpbGFibGU7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlIGNvbHVtbnMKICAgICAgICAgICAgICAgIG15ICVVbmlxdWVDb2x1bW5zOwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sdW1uc0VuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0VuYWJsZWRBdXgsICRDb2x1bW47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNldCBmaWx0ZXJlZCBjb2x1bW4gbGlzdAogICAgICAgICAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQgeyAkYSBjbXAgJGIgfSBAeyAkT2JqZWN0LT57Q29sdW1uc0F2YWlsYWJsZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICFncmVwIHsgJF8gZXEgJENvbHVtbk5hbWUgfSBAQ29sdW1uc0VuYWJsZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENvbHVtbnNBdmFpbGFibGUsICRDb2x1bW5OYW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAlQ29sdW1uczsKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQgQENvbHVtbnNBdmFpbGFibGUgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbHVtbnN7Q29sdW1uc30tPnskQ29sdW1uTmFtZX0gPSAoIGdyZXAgeyAkQ29sdW1uTmFtZSBlcSAkXyB9IEBDb2x1bW5zRW5hYmxlZCApID8gMSA6IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckNvbHVtblNldHRpbmdzJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgICAgICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+IFwlQ29sdW1ucyApLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zRW5hYmxlZCAgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXEBDb2x1bW5zRW5hYmxlZCApLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zQXZhaWxhYmxlID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXEBDb2x1bW5zQXZhaWxhYmxlICksCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVQcmVmICAgICAgICAgPT4gJFByZWZLZXlDb2x1bW5zLAogICAgICAgICAgICAgICAgICAgICAgICBEZXNjICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU2hvd24gQ29sdW1ucycpLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRFbnYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJBY3Rpb24gICAgID0+ICRFbnYtPntBY3Rpb259IC4gJy0nIC4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwTmFtZSAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1PdmVydmlld0ZpbHRlclNldHRpbmdzJywKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfSAgICAjIGVuZCBzaG93IGNvbHVtbiBmaWx0ZXJzIHByZWZlcmVuY2VzCgogICAgICAgICMgY2hlY2sgaWYgdGhlcmUgd2FzIHN0b3JlZCBmaWx0ZXJzLCBhbmQgcHJpbnQgYSBsaW5rIHRvIGRlbGV0ZSB0aGVtCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJE9iamVjdC0+e1N0b3JlZEZpbHRlcnN9ICkgKSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93UmVtb3ZlQ29sdW1uRmlsdGVycycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDU1MgPT4gIkNvbnRleHRTZXR0aW5ncyBSZW1vdmVGaWx0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuYXYgYmFyIGFuZCBydW4gb3ZlcnZpZXcgYmFja2VuZCBtb2R1bGUKICAgIG15ICROYXZCYXJIVE1MID0gJyc7CgojIFJvdGhlciBPU1MgLyBJVFNNIFB1YmxpYyBDTURCCiMgICAgIGlmICggJFBhcmFte0Zyb250ZW5kfSBuZSAnQ3VzdG9tZXInICkgewogICAgaWYgKCAkUGFyYW17RnJvbnRlbmR9IG5lICdDdXN0b21lcicgJiYgJFBhcmFte0Zyb250ZW5kfSBuZSAnUHVibGljJyApIHsKIyBFTyBJVFNNIFB1YmxpYyBDTURCCiAgICAgICAgJE5hdkJhckhUTUwgPSAkU2VsZi0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7ICVQYXJhbSwgfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICROYXZCYXJIVE1MLAogICAgICAgICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBDYXRlZ29yeUNsYXNzZXMgPT4gJEVudi0+e0NhdGVnb3J5Q2xhc3Nlc30sCiAgICAgICAgICAgIENvbmZpZyAgICAgICAgICA9PiAkQmFja2VuZHMtPnskVmlld30sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICA9PiAkTGltaXQsCiAgICAgICAgICAgIFN0YXJ0SGl0ICAgICAgICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgIFBhZ2VTaG93biAgICAgICA9PiAkUGFnZVNob3duLAogICAgICAgICAgICBBbGxIaXRzICAgICAgICAgPT4gJFBhcmFte1RvdGFsfSAgfHwgMCwKICAgICAgICAgICAgT3V0cHV0ICAgICAgICAgID0+ICRQYXJhbXtPdXRwdXR9IHx8ICcnLAogICAgICAgICk7Cn0KCj1oZWFkMiBYTUxEYXRhMkhhc2goKQoKcmV0dXJucyBhIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlIHJlcXVlc3RlZCBhdHRyaWJ1dGVzIGRhdGEgZm9yIGEgY29uZmlnIGl0ZW0KClJldHVybgoKICAgICREYXRhID0gewogICAgICAgICdIYXJkRGlzazo6MicgPT4gewogICAgICAgICAgICBWYWx1ZSA9PiAnSEQyJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmQgRGlzaycsCiAgICAgICAgIH0sCiAgICAgICAgJ0NQVTo6MScgPT4gewogICAgICAgICAgICBWYWx1ZSA9PiAnJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0NQVScsCiAgICAgICAgfSwKICAgICAgICAnSGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxJyA9PiB7CiAgICAgICAgICAgIFZhbHVlID0+ICc3ODAgR0InLAogICAgICAgICAgICBOYW1lICA9PiAnQ2FwYWNpdHknLAogICAgICAgIH0sCiAgICB9OwoKICAgIG15ICREYXRhID0gJExheW91dE9iamVjdC0+WE1MRGF0YTJIYXNoKAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJFZlcnNpb24tPntYTUxEZWZpbml0aW9ufSwKICAgICAgICBYTUxEYXRhICAgICAgID0+ICRWZXJzaW9uLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259LT5bMV0sCiAgICAgICAgQXR0cmlidXRlcyAgICA9PiBbJ0NQVTo6MScsICdIYXJkRHJpdmU6OjI6OkNhcGFjaXR5OjoxJywgLi4uXSwKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlRGF0YUhhc2hSZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIFByZWZpeCAgICAgICAgPT4gJ0hhcmREaXNrOjoxJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIFhNTERhdGEySGFzaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEYXRhfTsKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERlZmluaXRpb259OwogICAgcmV0dXJuIGlmICEkUGFyYW17QXR0cmlidXRlc307CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEYXRhfSBuZSAnSEFTSCc7CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17QXR0cmlidXRlc30gbmUgJ0FSUkFZJzsKCiAgICAjIHRvIHN0b3JlIHRoZSByZXR1cm4gZGF0YQogICAgbXkgJERhdGEgPSAkUGFyYW17RGF0YX0gfHwge307CgogICAgIyBjcmVhdGUgYSBsb29rdXAgc3RydWN0dXJlCiAgICBteSAlUmVsZXZhbnRBdHRyaWJ1dGVzID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRQYXJhbXtBdHRyaWJ1dGVzfSB9OwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKCiAgICAgICAgbXkgJENvdW50TWF4ID0gJEl0ZW0tPntDb3VudE1heH0gfHwgMTsKCiAgICAgICAgQ09VTlRFUjoKICAgICAgICBmb3IgbXkgJENvdW50ZXIgKCAxIC4uICRDb3VudE1heCApIHsKCiAgICAgICAgICAgICMgYWRkIHByZWZpeAogICAgICAgICAgICBteSAkUHJlZml4ID0gJEl0ZW0tPntLZXl9IC4gJzo6JyAuICRDb3VudGVyOwogICAgICAgICAgICBpZiAoICRQYXJhbXtQcmVmaXh9ICkgewogICAgICAgICAgICAgICAgJFByZWZpeCA9ICRQYXJhbXtQcmVmaXh9IC4gJzo6JyAuICRQcmVmaXg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2tpcCBub3QgbmVlZGVkIGVsZW1lbnRzIGFuZCBzdWIgZWxlbWVudHMKICAgICAgICAgICAgbmV4dCBDT1VOVEVSIGlmICFncmVwIHsgJF8gPX4gbXtcQSRQcmVmaXh9IH0gQHsgJFBhcmFte0F0dHJpYnV0ZXN9IH07CgogICAgICAgICAgICAjIGxvb2t1cCB2YWx1ZQogICAgICAgICAgICBteSAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+WE1MVmFsdWVMb29rdXAoCiAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXS0+e0NvbnRlbnR9IC8vICcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvbmx5IGlmIHZhbHVlIGlzIGRlZmluZWQKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRWYWx1ZSApIHsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBvdXRwdXQgc3RyaW5nCiAgICAgICAgICAgICAgICAkVmFsdWUgPSAkU2VsZi0+SVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIEl0ZW0gID0+ICRJdGVtLAogICAgICAgICAgICAgICAgICAgIFByaW50ID0+ICRQYXJhbXtQcmludH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRSZWxldmFudEF0dHJpYnV0ZXN7JFByZWZpeH0gKSB7CgogICAgICAgICAgICAgICAgIyBzdG9yZSB0aGUgaXRlbSBpbiBoYXNoCiAgICAgICAgICAgICAgICAkRGF0YS0+eyRQcmVmaXh9ID0gewogICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICRJdGVtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlIC8vICcnLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAgICAgICAgICBpZiAoICRJdGVtLT57U3VifSApIHsKICAgICAgICAgICAgICAgICREYXRhID0gJFNlbGYtPlhNTERhdGEySGFzaCgKICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXSwKICAgICAgICAgICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRQcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiAkRGF0YSwKICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgID0+ICRQYXJhbXtBdHRyaWJ1dGVzfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICREYXRhOwp9CgoxOwo=</File>
        <File Location="Custom/Kernel/Output/HTML/ITSMConfigItem/DynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vRHluYW1pY0ZpZWxkLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCiMgVE9ETzogTWF5YmUgcmVuYW1lIHRvIEFnZW50Wm9vbSBvciBzaW1pbGFyCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpEeW5hbWljRmllbGQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhmaXJzdCk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0hhc2hSZWZXaXRoRGF0YSBJc0FycmF5UmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpEeW5hbWljRmllbGQgLSBjb25maWdpdGVtIHNwZWNpZmljIGR5bmFtaWMgZmllbGQgb3V0cHV0Cgo9aGVhZDEgREVTQ1JJUFRJT04KCkZ1bmN0aW9ucyB0byBnZW5lcmF0ZSBEeW5hbWljRmllbGQgSFRNTCBmb3IgQ29uZmlnSXRlbXMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhIER5bmFtaWNGaWVsZE91dHB1dCBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIG15ICREeW5hbWljRmllbGRPdXRwdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkR5bmFtaWNGaWVsZCcpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBQYWdlUmVuZGVyKCkKClJldHVybnMgdGhlIEhUTUwgZm9yIGEgcGFnZSBvZiBBZ2VudElUU01Db25maWdJdGVtWm9vbQoKICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJER5bmFtaWNGaWVsZE91dHB1dE9iamVjdCgKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgUGFnZVJlZiAgICA9PiAkUGFnZSwgICAgICAgICMgZWl0aGVyIFBhZ2VSZWYgb3IgUGFnZSBpcyByZXF1aXJlZAogICAgICAgIFBhZ2UgICAgICAgPT4gJ05hbWUnLAogICAgKTsKCj1jdXQKCnN1YiBQYWdlUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbSBEZWZpbml0aW9uKSkgewogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRQYXJhbXtEZWZpbml0aW9ufXtEZWZpbml0aW9uUmVmfTsKICAgIG15ICRQYWdlICAgICAgICAgID0gJFBhcmFte1BhZ2VSZWZ9IC8vIGZpcnN0IHsgJF8tPntOYW1lfSBlcSAkUGFyYW17UGFnZX0gfSAkRGVmaW5pdGlvblJlZi0+e1BhZ2VzfS0+QCo7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGFnZSkgfHwgIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhZ2UtPntDb250ZW50fSApICkgewogICAgICAgIG15ICRFcnJvck1lc3NhZ2UgPSBkZWZpbmVkICRQYXJhbXtQYWdlUmVmfQogICAgICAgICAgICA/ICdQYWdlUmVmIG5vdCB2YWxpZC4nCiAgICAgICAgICAgIDogJFBhcmFte1BhZ2V9ID8gIlBhZ2UgJFBhcmFte1BhZ2V9IG5vdCB2YWxpZCBmb3IgRGVmaW5pdGlvbklEICRQYXJhbXtEZWZpbml0aW9ufXtEZWZpbml0aW9uSUR9IG9mIGNsYXNzICRQYXJhbXtEZWZpbml0aW9ufXtDbGFzc30uIgogICAgICAgICAgICA6ICAgICAgICAgICAgICAgICdOZWVkIFBhZ2Ugb3IgUGFnZVJlZiEnOwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJEVycm9yTWVzc2FnZSwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUxheW91dDsKICAgIGlmICggJFBhZ2UtPntMYXlvdXR9ICkgewogICAgICAgICRMYXlvdXR7Q29sdW1uc30gPSAkUGFnZS0+e0xheW91dH17Q29sdW1uc30gPyBpbnQoICRQYWdlLT57TGF5b3V0fXtDb2x1bW5zfSApIDogMTsKCiAgICAgICAgIyBiYXNpYyBjb3JyZWN0aW9ucyBmb3IgZ3JpZC10ZW1wbGF0ZS1yb3dzCiAgICAgICAgbXkgQFdpZHRocyA9ICRQYWdlLT57TGF5b3V0fXtDb2x1bW5XaWR0aH0gPyAoICRQYWdlLT57TGF5b3V0fXtDb2x1bW5XaWR0aH0gPX4gLyhbXGRcLl0qXHcrKS9nICkgOiAoKTsKCiAgICAgICAgaWYgKCBAV2lkdGhzIDwgJExheW91dHtDb2x1bW5zfSApIHsKICAgICAgICAgICAgcHVzaCBAV2lkdGhzLCAoJzFmcicpIHggKCAkTGF5b3V0e0NvbHVtbnN9IC0gQFdpZHRocyApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dHtXaWR0aHN9ID0gam9pbiggJyAnLCBAV2lkdGhzWyAwIC4uICRMYXlvdXR7Q29sdW1uc30gLSAxIF0gKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVMYXlvdXQgPSAoCiAgICAgICAgICAgIENvbHVtbnMgPT4gMSwKICAgICAgICAgICAgV2lkdGhzICA9PiAnMWZyJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgewogICAgICAgIG15ICRTZWN0aW9ucyA9ICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9IC8vIHt9OwogICAgICAgIG15ICVLZXlUb0NzcyA9IHF3L1JvdyByb3cgQ29sdW1uIGNvbHVtbi87CgogICAgICAgIENPTlRFTlRCTE9DSzoKICAgICAgICBmb3IgbXkgJENvbnRlbnRCbG9jayAoICRQYWdlLT57Q29udGVudH0tPkAqICkgewoKICAgICAgICAgICAgIyBUaGUgcm9sZSBpcyBpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBuYW1lCiAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJFNlY3Rpb25zLT57ICRDb250ZW50QmxvY2stPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgbmV4dCBDT05URU5UQkxPQ0sgdW5sZXNzICRTZWN0aW9uOwoKICAgICAgICAgICAgbXkgJEdyaWRBcmVhOwogICAgICAgICAgICBmb3IgbXkgJEtleSAocXcvUm93IENvbHVtbi8pIHsKICAgICAgICAgICAgICAgIGlmICggJENvbnRlbnRCbG9jay0+eyAkS2V5IC4gJ1N0YXJ0JyB9ICkgewogICAgICAgICAgICAgICAgICAgICRHcmlkQXJlYSAuPSAnZ3JpZC0nIC4gJEtleVRvQ3NzeyRLZXl9IC4gJy1zdGFydDonIC4gaW50KCAkQ29udGVudEJsb2NrLT57ICRLZXkgLiAnU3RhcnQnIH0gKSAuICc7JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJENvbnRlbnRCbG9jay0+eyAkS2V5IC4gJ1NwYW4nIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEdyaWRBcmVhIC49ICdncmlkLScgLiAkS2V5VG9Dc3N7JEtleX0gLiAnLWVuZDpzcGFuICcgLiBpbnQoICRDb250ZW50QmxvY2stPnsgJEtleSAuICdTcGFuJyB9ICkgLiAnOyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudENlbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgR3JpZEFyZWEgPT4gJEdyaWRBcmVhLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRTZWN0aW9uLT57VHlwZX0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+X1NlY3Rpb25SZW5kZXIoCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgICA9PiAkU2VjdGlvbiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0lUU01Db25maWdJdGVtRGV0YWlscycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlTGF5b3V0LAogICAgKTsKfQoKc3ViIF9TZWN0aW9uUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkUGFyYW17U2VjdGlvbn17VHlwZX0gKSB7CiAgICAgICAgaWYgKCAkUGFyYW17U2VjdGlvbn17VHlwZX0gZXEgJ0NvbmZpZ0l0ZW1MaW5rcycgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1JlbmRlckNJTGlua3MoJVBhcmFtKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUGFyYW17U2VjdGlvbn17VHlwZX0gZXEgJ1JlZmVyZW5jZWRTZWN0aW9uJyApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fUmVuZGVyUmVmZXJlbmNlZFNlY3Rpb24oJVBhcmFtKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUGFyYW17U2VjdGlvbn17VHlwZX0gZXEgJ0Rlc2NyaXB0aW9uJyApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fUmVuZGVyRGVzY3JpcHRpb25TZWN0aW9uKCVQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1NlY3Rpb259e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgc2VjdGlvbiB0eXBlICckUGFyYW17U2VjdGlvbn17VHlwZX0nISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IEhUTUwgZnJvbSBhZGRpdGlvbmFsIG1vZHVsZXMKICAgIGVsc2lmICggJFBhcmFte1NlY3Rpb259e01vZHVsZX0gKSB7CiAgICAgICAgbXkgJE1vZHVsZSA9ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OlNlY3Rpb246OicgLiAkUGFyYW17U2VjdGlvbn17TW9kdWxlfTsKCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgkTW9kdWxlKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgc2VjdGlvbiBtb2R1bGUgJyRNb2R1bGUnIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIG15ICRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCRNb2R1bGUpOwogICAgICAgIG15ICRIVE1MICAgPSAkT2JqZWN0LT5SdW4oJVBhcmFtKTsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyaWNIVE1MJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBIVE1MID0+ICRIVE1MLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIG15ICRSb3dIYXNWYWx1ZSA9IHN1YiB7CiAgICAgICAgcmV0dXJuIDEgaWYgZ3JlcCB7IGRlZmluZWQgJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkXy0+e0RGfSB9IH0gJF9bMF0tPkAqOwogICAgICAgIHJldHVybiAwOwogICAgfTsKICAgIG15ICRHcmlkSGFzVmFsdWUgPSBzdWIgewogICAgICAgIGZvciBteSAkUm93ICggJF9bMF0tPkAqICkgewogICAgICAgICAgICByZXR1cm4gMSBpZiAkUm93SGFzVmFsdWUtPigkUm93KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRMaXN0OwoKICAgIFJPVzoKICAgIGZvciBteSAkUm93ICggJFBhcmFte1NlY3Rpb259e0NvbnRlbnR9LT5AKiApIHsKICAgICAgICBpZiAoICRSb3ctPntIZWFkZXJ9ICkgewogICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgSGVhZGVyID0+ICRSb3ctPntIZWFkZXJ9LAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZExpc3QgPSAwOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkUm93LT57REZ9ICkgewogICAgICAgICAgICBuZXh0IFJPVyBpZiAhZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRSb3ctPntERn0gfTsKCiAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGRMaXN0ICkgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRocyA9PiAnMWZyIDFmcicsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkUGFyYW17RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfXsgJFJvdy0+e0RGfSB9OwoKICAgICAgICAgICAgbmV4dCBST1cgaWYgISREeW5hbWljRmllbGQ7CgogICAgICAgICAgICBteSAkRGlzcGxheVZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJFJvdy0+e0RGfSB9LAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsICAgID0+ICRSb3ctPntMYWJlbH0gfHwgJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAnTGFiZWwnLAogICAgICAgICAgICAgICAgICAgIENTU0NsYXNzID0+ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnID8gJ0R5bmFtaWNGaWVsZFNldExhYmVsJyA6IHVuZGVmLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgfHwgJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1JpY2hUZXh0JyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0Z1bGxSb3cnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJERpc3BsYXlWYWx1ZS0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TmFtZX0gPT4gJERpc3BsYXlWYWx1ZS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW19LT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCgogICAgICAgICAgICAgICAgICAgICAgICAjIEluY2x1ZGUgdW5pcXVlIHBhcmFtZXRlciB3aXRoIGR5bmFtaWMgZmllbGQgbmFtZSBpbiBjYXNlIG9mIGNvbGxpc2lvbiB3aXRoIG90aGVycy4KICAgICAgICAgICAgICAgICAgICAgICAgIyAgIFBsZWFzZSBzZWUgYnVnIzEzMzYyIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGQtPntOYW1lfSIgPT4gJERpc3BsYXlWYWx1ZS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdWYWx1ZUxpbmsnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ0F0dGFjaG1lbnQnICkgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVSYXcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWUnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoICRSb3ctPntHcmlkfSApIHsKICAgICAgICAgICAgbmV4dCBST1cgaWYgISRHcmlkSGFzVmFsdWUtPiggJFJvdy0+e0dyaWR9e1Jvd3N9ICk7CgogICAgICAgICAgICBteSAkQ29sdW1ucyA9IGludCggJFJvdy0+e0dyaWR9e0NvbHVtbnN9ICk7CgogICAgICAgICAgICAjIGJhc2ljIGNvcnJlY3Rpb25zIGZvciBncmlkLXRlbXBsYXRlLXJvd3MKICAgICAgICAgICAgbXkgQFdpZHRocyA9ICRSb3ctPntHcmlkfXtDb2x1bW5XaWR0aH0gPyAoICRSb3ctPntHcmlkfXtDb2x1bW5XaWR0aH0gPX4gLyhbXGRcLl0qXHcrKS9nICkgOiAoKTsKCiAgICAgICAgICAgIGlmICggQFdpZHRocyA8ICRDb2x1bW5zICkgewogICAgICAgICAgICAgICAgcHVzaCBAV2lkdGhzLCAoJzFmcicpIHggKCAkQ29sdW1ucyAtIEBXaWR0aHMgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFdpZHRocyA9PiBqb2luKCAnICcsIEBXaWR0aHNbIDAgLi4gJENvbHVtbnMgLSAxIF0gKSwKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICBHUklEUk9XOgogICAgICAgICAgICBmb3IgbXkgJEdyaWRSb3cgKCAkUm93LT57R3JpZH17Um93c30tPkAqICkgewogICAgICAgICAgICAgICAgbmV4dCBHUklEUk9XIGlmICEkUm93SGFzVmFsdWUtPigkR3JpZFJvdyk7CgogICAgICAgICAgICAgICAgbXkgJENvbHVtbkluZGV4ID0gMDsKICAgICAgICAgICAgICAgIG15IEBEaXNwbGF5VmFsdWVzOwogICAgICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggJEdyaWRSb3ctPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZC0+e0RGfTsKCiAgICAgICAgICAgICAgICAgICAgJENvbHVtbkluZGV4Kys7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkUGFyYW17RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfXsgJEZpZWxkLT57REZ9IH07CgogICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWVzWyRDb2x1bW5JbmRleF0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkLT57REZ9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBncmlkIGNvbHVtbiBmcm9tIGRlZmluaXRpb24KICAgICAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEZpZWxkLT57TGFiZWx9IHx8ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmlkQ29sdW1uID0+ICJncmlkLWNvbHVtbi1zdGFydDogJENvbHVtbkluZGV4OyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgID0+ICdMYWJlbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICRDb2x1bW5JbmRleCApIHsKICAgICAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWVzWyRJbmRleF0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JpZENvbHVtbiA9PiAiZ3JpZC1jb2x1bW4tc3RhcnQ6ICRJbmRleDsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICA9PiAnVmFsdWUnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICREeW5hbWljRmllbGRMaXN0ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUmVuZGVyQ0lMaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJERpcmVjdGlvbiA9ICRQYXJhbXtTZWN0aW9ufXtMaW5rZWRBc30gfHwgJ1NvdXJjZSc7CiAgICBteSAkVHlwZXMgICAgID0gSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17U2VjdGlvbn17TGlua1R5cGVzfSApID8gJFBhcmFte1NlY3Rpb259e0xpbmtUeXBlc30gOiB1bmRlZjsKCiAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCgogICAgICAgICMgVE9ETzogV2hhdCBhYm91dCB2ZXJzaW9ucwogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEaXJlY3Rpb24gICAgPT4gJERpcmVjdGlvbiwKICAgICAgICBUeXBlcyAgICAgICAgPT4gJFR5cGVzLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRMaW5rZWRDb25maWdJdGVtczsKCiAgICBteSAlTGlua2VkQ2xhc3NlczsKCiAgICBmb3IgbXkgJExpbmsgKCAkTGlua2VkQ29uZmlnSXRlbXMtPkAqICkgewogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTGluay0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPOiBUaGluayBhYm91dCBzb3J0aW5nCiAgICAgICAgcHVzaCBAeyAkTGlua2VkQ2xhc3Nlc3sgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSB9LCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgIH07CiAgICB9CgogICAgIyBUT0RPOiBBY2Nlc3MgcmlnaHRzOyBjbGFzc2VzIGZvciBhZ2VudHM7IGZvciBjdXN0b21lcnM/CiAgICAjIFRPRE86IENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRpbGU7IGNsYXNzIHJlc3RyaWN0aW9ucywgZGYgcmVzdHJpY3Rpb25zLCA/CgogICAgaWYgKCAkUGFyYW17U2VjdGlvbn17SGVhZGVyfSApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlclJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSGVhZGVyID0+ICRQYXJhbXtTZWN0aW9ufXtIZWFkZXJ9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU00gUHVibGljIENNREIKIyAgICBteSAkQWN0aW9uID0gJFBhcmFte0xheW91dE9iamVjdH17VXNlclR5cGV9ICYmICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSBlcSAnQ3VzdG9tZXInCiMgICAgICAgID8gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tJwojICAgICAgICA6ICdBZ2VudElUU01Db25maWdJdGVtWm9vbSc7CiAgICBteSAkQWN0aW9uOwogICAgaWYgKCAkUGFyYW17TGF5b3V0T2JqZWN0fXtVc2VyVHlwZX0gKSB7CiAgICAgICAgJEFjdGlvbiA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSBlcSAnQ3VzdG9tZXInID8gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tJyA6ICdBZ2VudElUU01Db25maWdJdGVtWm9vbSc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkQWN0aW9uID0gJ1B1YmxpY0lUU01Db25maWdJdGVtWm9vbSc7CiAgICB9CiMgRU8gSVRTTSBQdWJsaWMgQ01EQgoKICAgIGZvciBteSAkQ2xhc3MgKCBzb3J0IGtleXMgJUxpbmtlZENsYXNzZXMgKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFdpZHRocyA9PiAnMWZyIDFmcicsCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRDbGFzcywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdMYWJlbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRDSSAoIHNvcnQgeyAkYS0+e05hbWV9IGNtcCAkYi0+e05hbWV9IH0gJExpbmtlZENsYXNzZXN7JENsYXNzfS0+QCogKSB7CiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICA9PiAkQ0ktPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgID0+ICRDSS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgPT4gJFBhcmFte0xheW91dE9iamVjdH17QmFzZWxpbmt9IC4gIkFjdGlvbj0kQWN0aW9uO0NvbmZpZ0l0ZW1JRD0kQ0ktPntDb25maWdJdGVtSUR9IiwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgID0+ICdWYWx1ZUxpbmsnLAogICAgICAgICAgICAgICAgICAgIEdyaWRDb2x1bW4gPT4gJ2dyaWQtY29sdW1uLXN0YXJ0OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUmVuZGVyRGVzY3JpcHRpb25TZWN0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0hlYWRlclJvdycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEhlYWRlciA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgIH0sCiAgICApOwoKICAgICMgcmVuZGVyIGRlc2NyaXB0aW9uIHJpY2h0ZXh0IGVkaXRvcgogICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFdpZHRocyA9PiAnMWZyJywKICAgICAgICB9LAogICAgKTsKCiMgUm90aGVyIE9TUyAvIElUU00gUHVibGljIENNREIKICAgIG15ICRGcm9udGVuZDsKICAgIGlmICggJFBhcmFte0xheW91dE9iamVjdH17VXNlclR5cGV9ICkgewogICAgICAgICRGcm9udGVuZCA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSBlcSAnVXNlcicgPyAnQWdlbnQnIDogJ0N1c3RvbWVyJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRGcm9udGVuZCA9ICdQdWJsaWMnOwogICAgfQojIEVPIElUU00gUHVibGljIENNREIKCiAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXtWZXJzaW9uSUR9LAojIFJvdGhlciBPU1MgLyBJVFNNIFB1YmxpYyBDTURCCiMgICAgICAgICAgICAgRnJvbnRlbmQgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSBlcSAnVXNlcicgPyAnQWdlbnQnIDogJ0N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbnRlbmQgICAgID0+ICRGcm9udGVuZCwKIyBFTyBJVFNNIFB1YmxpYyBDTURCCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnSWZyYW1lJywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIF9SZW5kZXJSZWZlcmVuY2VkU2VjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0xheW91dE9iamVjdH07CgogICAgbXkgJFJlZmVyZW5jZWRDb25maWdJdGVtID0gJFNlbGYtPl9SZWZlcmVuY2VkQ29uZmlnSXRlbUdldCgKICAgICAgICBTZWN0aW9uICAgID0+ICRQYXJhbXtTZWN0aW9ufSwKICAgICAgICBDb25maWdJdGVtID0+ICRQYXJhbXtDb25maWdJdGVtfSwKICAgICk7CiAgICByZXR1cm4gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRSZWZlcmVuY2VkQ29uZmlnSXRlbSk7CgogICAgIyBnZXQgZGVmaW5pdGlvbiBvZiByZWZlcmVuY2VkIGNvbmZpZyBpdGVtIGFuZCBwYXNzIGl0IG9uIHRvIF9TZWN0aW9uUmVuZGVyCiAgICBteSAkUmVmZXJlbmNlZENJRGVmaW5pdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIERlZmluaXRpb25JRCA9PiAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0tPntEZWZpbml0aW9uSUR9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRSZWZlcmVuY2VkQ0lEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfTsKCiAgICBpZiAoICRQYXJhbXtTZWN0aW9ufXtGaWVsZExpc3RQcmV9ICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFByZX0gKSApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFdpZHRocyA9PiAnMWZyIDFmcicsCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJERGRW50cnkgKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UHJlfS0+QCogKSB7CiAgICAgICAgICAgICRTZWxmLT5fUmVuZGVyREYoCiAgICAgICAgICAgICAgICBSb3cgICAgICAgICAgICAgICAgICAgICAgID0+ICRERkVudHJ5LAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbSAgICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX0sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uICAgICAgICAgICAgICAgID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgICAgICAgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0+ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+X1NlY3Rpb25SZW5kZXIoCiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICRSZWZlcmVuY2VkQ29uZmlnSXRlbSwKICAgICAgICBEZWZpbml0aW9uICAgPT4gJFJlZmVyZW5jZWRDSURlZmluaXRpb24sCiAgICAgICAgU2VjdGlvbiAgICAgID0+ICRSZWZlcmVuY2VkQ0lEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9eyAkUGFyYW17U2VjdGlvbn17U2VjdGlvbk5hbWV9IH0sCiAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgKTsKCiAgICBpZiAoICRQYXJhbXtTZWN0aW9ufXtGaWVsZExpc3RQb3N0fSAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtTZWN0aW9ufXtGaWVsZExpc3RQb3N0fSApICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgV2lkdGhzID0+ICcxZnIgMWZyJywKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIGZvciBteSAkREZFbnRyeSAoICRQYXJhbXtTZWN0aW9ufXtGaWVsZExpc3RQb3N0fS0+QCogKSB7CiAgICAgICAgICAgICRTZWxmLT5fUmVuZGVyREYoCiAgICAgICAgICAgICAgICBSb3cgICAgICAgICAgICAgICAgICAgICAgID0+ICRERkVudHJ5LAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbSAgICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX0sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uICAgICAgICAgICAgICAgID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgICAgICAgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0+ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9SZWZlcmVuY2VkQ29uZmlnSXRlbUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHBhcmFtcwogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbmZpZ0l0ZW19ICk7CiAgICByZXR1cm4gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17U2VjdGlvbn0gKTsKCiAgICAjIGZldGNoIGNvbmZpZyBvZiByZWZlcmVuY2VkIGZpZWxkCiAgICBteSAkUmVmZXJlbmNlZEZpZWxkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAkUGFyYW17U2VjdGlvbn17UmVmZXJlbmNlRmllbGR9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRSZWZlcmVuY2VkRmllbGRDb25maWcpOwoKICAgICMgZmV0Y2ggY29uZmlnIGl0ZW0gZGVwZW5kaW5nIG9uIGZpZWxkIHR5cGUKICAgIG15ICVDb25maWdJdGVtR2V0UGFyYW1zID0gKAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICRSZWZlcmVuY2VkRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyApIHsKICAgICAgICAkQ29uZmlnSXRlbUdldFBhcmFtc3tDb25maWdJdGVtSUR9ID0gJFBhcmFte0NvbmZpZ0l0ZW19eyJEeW5hbWljRmllbGRfJFJlZmVyZW5jZWRGaWVsZENvbmZpZy0+e05hbWV9In1bMF07CiAgICB9CiAgICBlbHNpZiAoICRSZWZlcmVuY2VkRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtVmVyc2lvbicgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1HZXRQYXJhbXN7VmVyc2lvbklEfSA9ICRQYXJhbXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRSZWZlcmVuY2VkRmllbGRDb25maWctPntOYW1lfSJ9WzBdOwogICAgfQoKICAgIHJldHVybiB1bmxlc3MgKCAkQ29uZmlnSXRlbUdldFBhcmFtc3tDb25maWdJdGVtSUR9IHx8ICRDb25maWdJdGVtR2V0UGFyYW1ze1ZlcnNpb25JRH0gKTsKCiAgICAjIHJldHVybiByZWZlcmVuY2VkIGNvbmZpZyBpdGVtCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgJUNvbmZpZ0l0ZW1HZXRQYXJhbXMsCiAgICApOwp9CgpzdWIgX1JlbmRlckRGIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Um93fXtERn07CiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17Um93fXtERn0gfTsKCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn17ICRQYXJhbXtSb3d9e0RGfSB9OwoKICAgIHJldHVybiBpZiAhJER5bmFtaWNGaWVsZDsKCiAgICBteSAkRGlzcGxheVZhbHVlID0gJFBhcmFte0R5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3R9LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte1Jvd317REZ9IH0sCiAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAxLAogICAgKTsKCiAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIExhYmVsID0+ICRQYXJhbXtSb3d9e0xhYmVsfSB8fCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9LAogICAgICAgICAgICBUeXBlICA9PiAnTGFiZWwnLAogICAgICAgIH0sCiAgICApOwoKICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgfHwgJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1JpY2hUZXh0JyApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgVHlwZSA9PiAnRnVsbFJvdycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJERpc3BsYXlWYWx1ZS0+e0xpbmt9ICkgewogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9ID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPiUqLAogICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCgogICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAjICAgUGxlYXNlIHNlZSBidWcjMTMzNjIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGQtPntOYW1lfSIgPT4gJERpc3BsYXlWYWx1ZS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnQXR0YWNobWVudCcgKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1ZhbHVlUmF3JywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1ZhbHVlJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Custom/Kernel/System/ITSMConfigItem/Permission.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL1Blcm1pc3Npb24ucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb247Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTGlzdDo6VXRpbCBxdyhhbnkgbm9uZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uIC0gbW9kdWxlIGZvciBJVFNNQ29uZmlnSXRlbS5wbSB3aXRoIFBlcm1pc3Npb24gZnVuY3Rpb25zCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBQZXJtaXNzaW9uIGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgUGVybWlzc2lvbigpCgpyZXR1cm5zIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHBlcm1pc3Npb25zIG9yIG5vdAoKICAgIG15ICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBUeXBlICAgICA9PiAncm8nLAogICAgICAgIFNjb3BlICAgID0+ICdDbGFzcycsICMgQ2xhc3MgfHwgSXRlbQogICAgICAgIENsYXNzSUQgID0+IDEyMywgICAgICMgaWYgU2NvcGUgaXMgJ0NsYXNzJwogICAgICAgIEl0ZW1JRCAgID0+IDEyMywgICAgICMgaWYgU2NvcGUgaXMgJ0l0ZW0nCiAgICAgICAgVXNlcklEICAgPT4gMTIzLAogICAgKTsKCm9yIHdpdGhvdXQgbG9nZ2luZywgZm9yIGV4YW1wbGUgZm9yIHRvIGNoZWNrIGlmIGEgbGluay9hY3Rpb24gc2hvdWxkIGJlIHNob3duCgogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICAgID0+ICdybycsCiAgICAgICAgU2NvcGUgICAgPT4gJ0NsYXNzJywgIyBDbGFzcyB8fCBJdGVtCiAgICAgICAgQ2xhc3NJRCAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnQ2xhc3MnCiAgICAgICAgSXRlbUlEICAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnSXRlbScKICAgICAgICBMb2dObyAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgUGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVHlwZSBTY29wZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBmb3IgZXhpc3RlbmNlIG9mIEl0ZW1JRCBvciBDbGFzc0lEIGRlcGVuZGVudAogICAgIyBvbiB0aGUgU2NvcGUKICAgIGlmICgKICAgICAgICAoICRQYXJhbXtTY29wZX0gZXEgJ0NsYXNzJyAmJiAhJFBhcmFte0NsYXNzSUR9ICkKICAgICAgICB8fAogICAgICAgICggJFBhcmFte1Njb3BlfSBlcSAnSXRlbScgJiYgISRQYXJhbXtJdGVtSUR9ICkKICAgICAgICApCiAgICB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIENsYXNzSUQgaWYgU2NvcGUgaXMgJ0NsYXNzJyBvciBJdGVtSUQgaWYgU2NvcGUgaXMgJ0l0ZW0nISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgUnVuIGFsbCBJVFNNQ29uZmlnSXRlbSBQZXJtaXNzaW9uIG1vZHVsZXMuCiAgICAjCiAgICAjIFRoZSBpZGVhIGlzIHRoZSB0aGUgcGVybWlzc2lvbiBtb2R1bGVzIGFyZSBvcmRlcmVkIGFuZCBjYW4gYmUgZGl2aWRlZCBpbnRvIHR3byBwaGFzZXMuCiAgICAjIEluIHRoZSBmaXJzdCBwaGFzZSAnUmVxdWlyZWQnIGlzIG9uIGFuZCAnR3JhbnRlZCcgaXMgb2ZmLiBUaGlzIGFzc3VyZXMgdGhhdCBhbGwgcmVxdWlyZWQKICAgICMgcHJlY29uZGl0aW9ucyBhcmUgbWV0LiBJbiB0aGUgc2Vjb25kIHBoYXNlICdSZXF1aXJlZCcgaXMgb2ZmIGFuZCAnR3JhbnRlZCcgaXMgb24uIEl0IHN1ZmZpY2VzCiAgICAjIHdoZW4gb25seSBvbiBzZWNvbmQgcGhhc2UgbW9kdWxlIGdyYW50cyBhY2Nlc3MuCiAgICAjCiAgICAjIE90aGVyIGNvbWJpbmF0aW9ucyBhcmUgcG9zc2libGUgYnV0IG1pZ2h0IGJyaW5nIHN1cnByaXNpbmcgcmVzdWx0cy4KICAgIGlmICgKICAgICAgICByZWYgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCAnSVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OicgLiAkUGFyYW17U2NvcGV9ICkgZXEgJ0hBU0gnCiAgICAgICAgKQogICAgewogICAgICAgIG15ICVNb2R1bGVzID0gJXsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCAnSVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OicgLiAkUGFyYW17U2NvcGV9ICkKICAgICAgICB9OwogICAgICAgIE1PRFVMRToKICAgICAgICBmb3IgbXkgJE1vZHVsZSAoIHNvcnQga2V5cyAlTW9kdWxlcyApIHsKCiAgICAgICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICAgICAgbmV4dCBNT0RVTEUgdW5sZXNzICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNb2R1bGVzeyRNb2R1bGV9LT57TW9kdWxlfSApOwoKICAgICAgICAgICAgIyBjcmVhdGUgb2JqZWN0CiAgICAgICAgICAgIG15ICRNb2R1bGVPYmplY3QgPSAkTW9kdWxlc3skTW9kdWxlfS0+e01vZHVsZX0tPm5ldzsKCiAgICAgICAgICAgICMgZXhlY3V0ZSBSdW4oKQogICAgICAgICAgICBteSAkQWNjZXNzT2sgPSAkTW9kdWxlT2JqZWN0LT5SdW4oJVBhcmFtKTsKCiAgICAgICAgICAgICMgY2hlY2sgZ3JhbnRlZCBvcHRpb24gKHNob3VsZCBJIHNheSBvaykKICAgICAgICAgICAgaWYgKCAkQWNjZXNzT2sgJiYgJE1vZHVsZXN7JE1vZHVsZX0tPntHcmFudGVkfSApIHsKCiAgICAgICAgICAgICAgICAjIGFjY2VzcyBvawogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVmdXNlIGFjY2VzcyAgYmVjYXVzZSBhY2Nlc3MgaXMgZmFsc2UgYnV0IGl0J3MgcmVxdWlyZWQKICAgICAgICAgICAgaWYgKCAhJEFjY2Vzc09rICYmICRNb2R1bGVzeyRNb2R1bGV9LT57UmVxdWlyZWR9ICkgewogICAgICAgICAgICAgICAgaWYgKCAhJFBhcmFte0xvZ05vfSApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQZXJtaXNzaW9uIGRlbmllZCBiZWNhdXNlIG1vZHVsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIoJE1vZHVsZXN7JE1vZHVsZX0tPntNb2R1bGV9KSBpcyByZXF1aXJlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIoVXNlcklEOiAkUGFyYW17VXNlcklEfSAnJFBhcmFte1R5cGV9JyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICJvbiAkUGFyYW17U2NvcGV9OiAiIC4gJFBhcmFteyAkUGFyYW17U2NvcGV9IC4gJ0lEJyB9IC4gIikhIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcmVmdXNlIGFjY2VzcwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZG9uJ3QgZ3JhbnQgYWNjZXNzCiAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIChVc2VySUQ6ICRQYXJhbXtVc2VySUR9ICckUGFyYW17VHlwZX0nICIKICAgICAgICAgICAgICAgIC4gIm9uICRQYXJhbXtTY29wZX06ICIgLiAkUGFyYW17ICRQYXJhbXtTY29wZX0gLiAnSUQnIH0gLiAiKSEiLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cgo9aGVhZDIgQ3VzdG9tZXJQZXJtaXNzaW9uKCkKCnJldHVybnMgd2hldGhlciB0aGUgdXNlciBoYXMgcGVybWlzc2lvbnMgb3Igbm90CgogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXN0b21lclBlcm1pc3Npb24oCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgPT4gMTIzLAogICAgICAgIExvZ05vICAgICAgICA9PiAxLCAgICAjIG9wdGlvbmFsLCBkbyBub3QgbG9nLCBkZWZhdWx0OiAwCiAgICApOwoKPWN1dAoKc3ViIEN1c3RvbWVyUGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ3VzdG9tZXJHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckdyb3VwJyk7CiAgICBteSAlR3JvdXBMb29rdXA7CgogICAgbXkgJUNvbmRpdGlvbnMgPSAleyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0N1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpIC8vIHt9IH07CiAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICBDT05ESVRJT046CiAgICBmb3IgbXkgJENvbmRpdGlvblNldCAoIHZhbHVlcyAlQ29uZGl0aW9ucyApIHsKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntHcm91cHN9ICYmICRDb25kaXRpb25TZXQtPntHcm91cHN9LT5AKiApIHsKICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkQ3VzdG9tZXJHcm91cE9iamVjdC0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgbm9uZSB7ICRHcm91cExvb2t1cHskX30gfSAkQ29uZGl0aW9uU2V0LT57R3JvdXBzfS0+QCo7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntDbGFzc2VzfSApIHsKICAgICAgICAgICAgbXkgQENsYXNzZXMgPSByZWYgJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ID8gJENvbmRpdGlvblNldC0+e0NsYXNzZXN9LT5AKiA6ICggJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBAQ2xhc3NlcyAmJiAhZ3JlcCB7ICRfIGVxICRDb25maWdJdGVtLT57Q2xhc3N9IH0gQENsYXNzZXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntEZXBsb3ltZW50U3RhdGVzfSApIHsKICAgICAgICAgICAgbXkgQERlcGxTdGF0ZXMgPSByZWYgJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9ID8gJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiA6ICggJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9ICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBARGVwbFN0YXRlcyAmJiAhZ3JlcCB7ICRfIGVxICRDb25maWdJdGVtLT57RGVwbFN0YXRlfSB9IEBEZXBsU3RhdGVzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZGl0aW9uU2V0LT57RHluYW1pY0ZpZWxkVmFsdWVzfSApIHsKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9LT4lKiApIHsKICAgICAgICAgICAgICAgIG15ICRDb25kaXRpb25WYWx1ZSA9ICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9IC8vICcnOwoKICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAkQ29uZGl0aW9uVmFsdWUgbmUgJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICFyZWYgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAkQ29uZGl0aW9uVmFsdWUgbmUgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmRpdGlvblZhbHVlIGVxICcnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0tPkAqOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgbm9uZSB7ICRfIGVxICRDb25kaXRpb25WYWx1ZSB9ICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0tPkAqOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAhJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfTsKCiAgICAgICAgICAgIG15IEBDdXN0b21lclVzZXJzID0gcmVmICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9IH0KICAgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfS0+QCoKICAgICAgICAgICAgICAgIDogKCAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSB9ICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJF8gZXEgJFBhcmFte1VzZXJJRH0gfSBAQ3VzdG9tZXJVc2VyczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICEkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSB9OwoKICAgICAgICAgICAgbXkgQEN1c3RvbWVyQ29tcGFuaWVzID0gcmVmICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH0KICAgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0gfS0+QCoKICAgICAgICAgICAgICAgIDogKCAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSB9ICk7CgogICAgICAgICAgICBteSAlQWNjZXNzaWJsZUN1c3RvbWVycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckdyb3VwJyktPkdyb3VwQ29udGV4dEN1c3RvbWVycygKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgbm9uZSB7ICRBY2Nlc3NpYmxlQ3VzdG9tZXJzeyRffSB9IEBDdXN0b21lckNvbXBhbmllczsKICAgICAgICB9CgogICAgICAgICMgZ3JhbnQgYWNjZXNzCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaWYgKCAhJFBhcmFte0xvZ05vfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQZXJtaXNzaW9uIGRlbmllZCAoQ3VzdG9tZXJVc2VySUQ6ICRQYXJhbXtVc2VySUR9ICIKICAgICAgICAgICAgICAgIC4gIm9uIENvbmZpZ0l0ZW06ICIgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICIpISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRvbid0IGdyYW50IGFjY2VzcwogICAgcmV0dXJuOwp9CgojIFJvdGhlciBPU1MgLyBJVFNNIFB1YmxpYyBDTURCCnN1YiBQdWJsaWNQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUNvbmRpdGlvbnMgPSAleyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1B1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMnKSAvLyB7fSB9OwogICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gYW55IHsgJF8tPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9IHx8ICRfLT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSB9IHZhbHVlcyAlQ29uZGl0aW9ucywKICAgICk7CgogICAgQ09ORElUSU9OOgogICAgZm9yIG15ICRDb25kaXRpb25TZXQgKCB2YWx1ZXMgJUNvbmRpdGlvbnMgKSB7CiAgICAgICAgaWYgKCAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gKSB7CiAgICAgICAgICAgIG15IEBDbGFzc2VzID0gcmVmICRDb25kaXRpb25TZXQtPntDbGFzc2VzfSA/ICRDb25kaXRpb25TZXQtPntDbGFzc2VzfS0+QCogOiAoICRDb25kaXRpb25TZXQtPntDbGFzc2VzfSApOwoKICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgQENsYXNzZXMgJiYgbm9uZSB7ICRfIGVxICRDb25maWdJdGVtLT57Q2xhc3N9IH0gQENsYXNzZXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntEZXBsb3ltZW50U3RhdGVzfSApIHsKICAgICAgICAgICAgbXkgQERlcGxTdGF0ZXMgPSByZWYgJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9ID8gJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiA6ICggJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9ICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBARGVwbFN0YXRlcyAmJiBub25lIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0gQERlcGxTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgewogICAgICAgICAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIGtleXMgJENvbmRpdGlvblNldC0+e0R5bmFtaWNGaWVsZFZhbHVlc30tPiUqICkgewogICAgICAgICAgICAgICAgbXkgJEZpZWxkVmFsdWUgPSAkQ29uZGl0aW9uU2V0LT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfTsKICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICggJEZpZWxkVmFsdWUgJiYgISgkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9IGVxICRGaWVsZFZhbHVlKSApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdyYW50IGFjY2VzcwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGlmICggISRQYXJhbXtMb2dOb30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGVybWlzc2lvbiBkZW5pZWQgKFB1YmxpYyBhY2Nlc3MgIgogICAgICAgICAgICAgICAgLiAib24gQ29uZmlnSXRlbTogIiAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gIikhIiwKICAgICAgICApOwogICAgfQoKICAgICMgZG9uJ3QgZ3JhbnQgYWNjZXNzCiAgICByZXR1cm47Cn0KIyBFTyBJVFNNIFB1YmxpYyBDTURCCgoxOwo=</File>
        <File Location="Kernel/Config/Files/XML/PublicITSMConfigItem.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDb25maWciPgoKICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5JVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0lUU01Db25maWdJdGVtWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIHpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBjb25maWcgaXRlbXMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0lUU01Db25maWdJdGVtQXR0YWNobWVudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlRvIGRvd25sb2FkIGF0dGFjaG1lbnRzLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY092ZXJ2aWV3IyMjU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpQdWJsaWNPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW0jIyNQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNDbGFzcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI05hbWUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjTnVtYmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjRGVwbG95bWVudFN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0luY2lkZW50U3RhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NvcnRCeTo6RGVmYXVsdCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkFnZSI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkFnZSIgVHJhbnNsYXRhYmxlPSIxIj5BZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ik51bWJlciIgVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRGVwbFN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkRlcGxveW1lbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkluY2lTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5JbmNpZGVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRG93biIgVHJhbnNsYXRhYmxlPSIxIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJVcCIgVHJhbnNsYXRhYmxlPSIxIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOdW1iZXIiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOYW1lIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRGVwbG95bWVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0luY2lkZW50U3RhdGVJRHMiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgJ1gnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6ICdhIHRleHQnLCBEcm9wZG93bjogJzEnLCBEYXRlL1RpbWU6ICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5OycgYW5kIG9yICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03JzsuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTdXBwcmVzc0Z1enp5TG9naWMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpOYXZpZ2F0aW9uIyMjUHVibGljSVRTTUNvbmZpZ0l0ZW0jIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNNREI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPlRpY2tldDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5NZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MzEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9InN2Z0ljb24iPnZhci9odHRwZC9odGRvY3Mvc2tpbnMvUHVibGljL2RlZmF1bHQvaW1nL2RldmljZXNfYmxhY2tfMjRkcC5zdmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzA1IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyNEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+PC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzAzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+PC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OlB1YmxpY0lUU01Db25maWdJdGVtIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5EeW5hbWljRmllbGRSZWZlcmVuY2VTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5PdmVydmlldy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5DdXN0b21lci5TZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVE9ETyByZWxldmFudCBmb3IgY29sdW1uIHNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAtLT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbU92ZXJ2aWV3LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5UYWJsZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tIFRPRE8gcmVsZXZhbnQgZm9yIGNvbHVtbiBzZXR0aW5ncwogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFsbG9jYXRpb25MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1PdmVydmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbVNlYXJjaC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGV0YWlsLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5UYWJsZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uUHJpbnQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5EeW5hbWljRmllbGRSZWZlcmVuY2VTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5PdmVydmlldy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5DdXN0b21lci5TZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uWm9vbS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tIyMjVmVyc2lvbnNFbmFibGVkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlB1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtWm9vbSMjI1ZlcnNpb25zU2VsZWN0YWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tIyMjR2VuZXJhbEluZm8iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+V2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBIaWRkZW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBTaG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW5jaWRlbnRTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVkVGltZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkVGltZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJBdXRvQ29tcGxldGU6OlB1YmxpYyMjI0RlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBhdXRvY29tcGxldGlvbiBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdXRvQ29tcGxldGVBY3RpdmUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1pblF1ZXJ5TGVuZ3RoIj4yPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWVyeURlbGF5Ij4xMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1heFJlc3VsdHNEaXNwbGF5ZWQiPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCdXR0b25UZXh0IiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNDb2xvckRlZmluaXRpb25zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFpbkRhcmsiPiMwMDAyM2M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1haW5MaWdodCI+IzAwMWJmZjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFpbkhvdmVyIj4jMDAwMDk5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCR0xpZ2h0Ij4jZjdmN2Y5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCR0RhcmsiPiNiZmJmY2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHREYXJrIj4jMDAwMjNjPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0TGlnaHQiPiM3ZjgwOWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkhpZ2hsaWdodCI+I2ZlZjIzNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTm90aWZ5T0siPiNjNGNkZmE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5vdGlmeVdhcm4iPiNmZmZjY2M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5vdGlmeUVyciI+I2Y5YmNiMjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSG92ZXJMaWdodCI+I2M0Y2RmYTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSG92ZXJEYXJrIj4jNmQ4M2YyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaGFkb3dNYWluIj5yZ2JhKDAsMjcsMjU1LDAuMjQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaGFkb3dEYXJrIj5yZ2JhKDQsMCw3MSwwLjE2KTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtIyMjVGl0bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj5Db25maWdJdGVtczwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1RpdGxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPkNvbmZpZ0l0ZW0gU2VhcmNoPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/Output/HTML/Layout/Public.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OlB1YmxpYzsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKdXNlIERpZ2VzdDo6TUQ1IHF3KG1kNV9oZXgpOwp1c2UgU2NhbGFyOjpVdGlsIHF3KGJsZXNzZWQpOwp1c2UgRmlsZTo6QmFzZW5hbWUgcXcoZmlsZXBhcnNlKTsKCiMgQ1BBTiBtb2R1bGVzCnVzZSBVUkk6OkVzY2FwZSBxdyh1cmlfZXNjYXBlX3V0ZjgpOwp1c2UgUGxhY2s6OlJlc3BvbnNlICgpOwp1c2UgUGxhY2s6OlV0aWwgICAgICgpOwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpXZWI6OkV4Y2VwdGlvbiAoKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNoYXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkpTT04nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RhdGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdG9yYWJsZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN5c3RlbU1haW50ZW5hbmNlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZpZGVvQ2hhdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVzcG9uc2UnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OlB1YmxpYyAtIEhlbHBlciBmdW5jdGlvbnMgZm9yIHB1YmxpYyBtb2R1bGUgcmVuZGVyaW5nLgoKPWhlYWQxIFNZTk9QU0lTCgogICAgIyBObyBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBzaG91bGQgYmUgY3JlYXRlZCBkaXJlY3RseS4KICAgICMgSW5zdGVhZCB0aGUgbW9kdWxlIGlzIGxvYWRlZCBpbXBsaWNpdGx5IGJ5IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7Cgo9Y3V0CgpzdWIgUHVibGljSGVhZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFR5cGUgPSAkUGFyYW17VHlwZX0gfHwgJyc7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJEZpbGUgPSAkUGFyYW17RmlsZW5hbWV9IHx8ICRTZWxmLT57QWN0aW9ufSB8fCAndW5rbm93bic7CgogICAgIyBzZXQgZmlsZSBuYW1lIGZvciAic2F2ZSBwYWdlIGFzIgogICAgJFBhcmFte0NvbnRlbnREaXNwb3NpdGlvbn0gPSAiZmlsZW5hbWU9XCIkRmlsZS5odG1sXCIiOwoKICAgICMgYXJlYSBhbmQgdGl0bGUKICAgIGlmICgKICAgICAgICAhJFBhcmFte0FyZWF9CiAgICAgICAgJiYgJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWNGcm9udGVuZDo6TW9kdWxlJyktPnsgJFNlbGYtPntBY3Rpb259IH0KICAgICAgICApCiAgICB7CiAgICAgICAgJFBhcmFte0FyZWF9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWNGcm9udGVuZDo6TW9kdWxlJyktPnsgJFNlbGYtPntBY3Rpb259IH0KICAgICAgICAgICAgLT57TmF2QmFyTmFtZX0gfHwgJyc7CiAgICB9CiAgICBpZiAoCiAgICAgICAgISRQYXJhbXtUaXRsZX0KICAgICAgICAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpY0Zyb250ZW5kOjpNb2R1bGUnKS0+eyAkU2VsZi0+e0FjdGlvbn0gfQogICAgICAgICkKICAgIHsKICAgICAgICAkUGFyYW17VGl0bGV9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWNGcm9udGVuZDo6TW9kdWxlJyktPnsgJFNlbGYtPntBY3Rpb259IH0tPntUaXRsZX0KICAgICAgICAgICAgfHwgJyc7CiAgICB9CiAgICBpZiAoCiAgICAgICAgISRQYXJhbXtBcmVhfQogICAgICAgICYmICRDb25maWdPYmplY3QtPkdldCgnUHVibGljRnJvbnRlbmQ6Ok1vZHVsZScpLT57ICRTZWxmLT57QWN0aW9ufSB9CiAgICAgICAgKQogICAgewogICAgICAgICRQYXJhbXtBcmVhfSA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljRnJvbnRlbmQ6Ok1vZHVsZScpLT57ICRTZWxmLT57QWN0aW9ufSB9CiAgICAgICAgICAgIC0+e05hdkJhck5hbWV9IHx8ICcnOwogICAgfQogICAgaWYgKAogICAgICAgICEkUGFyYW17VGl0bGV9CiAgICAgICAgJiYgJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWNGcm9udGVuZDo6TW9kdWxlJyktPnsgJFNlbGYtPntBY3Rpb259IH0KICAgICAgICApCiAgICB7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljRnJvbnRlbmQ6Ok1vZHVsZScpLT57ICRTZWxmLT57QWN0aW9ufSB9LT57VGl0bGV9CiAgICAgICAgICAgIHx8ICcnOwogICAgfQogICAgZm9yIG15ICRXb3JkIChxdyhWYWx1ZSBUaXRsZSBBcmVhKSkgewogICAgICAgIGlmICggJFBhcmFteyRXb3JkfSApIHsKICAgICAgICAgICAgJFBhcmFte1RpdGxlQXJlYX0gLj0gJFNlbGYtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFteyRXb3JkfSApIC4gJyAtICc7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRGcm9udGVuZCA9ICdQdWJsaWMnOwoKICAgICMgcnVuIGhlYWRlciBtZXRhIG1vZHVsZXMgZm9yIHB1YmxpYyBmcm9udGVuZHMKICAgIG15ICRIZWFkZXJNZXRhTW9kdWxlID0gJENvbmZpZ09iamVjdC0+R2V0KCAkRnJvbnRlbmQgLiAnRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUnICk7CiAgICBpZiAoIHJlZiAkSGVhZGVyTWV0YU1vZHVsZSBlcSAnSEFTSCcgKSB7CiAgICAgICAgbXkgJUpvYnMgPSAleyRIZWFkZXJNZXRhTW9kdWxlfTsKCiAgICAgICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgICAgICBNT0RVTEU6CiAgICAgICAgZm9yIG15ICRKb2IgKCBzb3J0IGtleXMgJUpvYnMgKSB7CgogICAgICAgICAgICAjIGxvYWQgYW5kIHJ1biBtb2R1bGUKICAgICAgICAgICAgbmV4dCBNT0RVTEUgaWYgISRNYWluT2JqZWN0LT5SZXF1aXJlKCAkSm9ic3skSm9ifS0+e01vZHVsZX0gKTsKICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRKb2JzeyRKb2J9LT57TW9kdWxlfS0+bmV3KCAleyRTZWxmfSwgTGF5b3V0T2JqZWN0ID0+ICRTZWxmICk7CiAgICAgICAgICAgIG5leHQgTU9EVUxFIGlmICEkT2JqZWN0OwogICAgICAgICAgICAkT2JqZWN0LT5SdW4oICVQYXJhbSwgQ29uZmlnID0+ICRKb2JzeyRKb2J9ICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IHJ0bCBpZiBuZWVkZWQKICAgIGlmICggJFNlbGYtPntUZXh0RGlyZWN0aW9ufSAmJiAkU2VsZi0+e1RleHREaXJlY3Rpb259IGVxICdydGwnICkgewogICAgICAgICRQYXJhbXtCb2R5Q2xhc3N9ID0gJ1JUTCc7CiAgICB9CiAgICBlbHNpZiAoICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6OkRlYnVnTW9kZScpICkgewogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVidWdSVExCdXR0b24nLAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWZpbmUgKGN1c3RvbSkgbG9nbwogICAgbXkgJFdlYlBhdGggPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpXZWJQYXRoJyk7CiAgICAkUGFyYW17VVJMU2lnbmV0fSA9ICRXZWJQYXRoIC4gJ3NraW5zL1B1YmxpYy9kZWZhdWx0L2ltZy9vdG9ib19zaWduZXRfdy5zdmcnOwogICAgaWYgKCBkZWZpbmVkICRDb25maWdPYmplY3QtPkdldCgnUHVibGljTG9nbycpICkgewogICAgICAgIG15ICVQdWJsaWNMb2dvID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWNMb2dvJykgfTsKCiAgICAgICAgTE9HTzoKICAgICAgICBmb3IgbXkgJFN0YXRlbWVudCAocXcoVVJMU2lnbmV0KSkgewogICAgICAgICAgICBuZXh0IExPR08gaWYgISRQdWJsaWNMb2dveyRTdGF0ZW1lbnR9OwoKICAgICAgICAgICAgaWYgKCAkUHVibGljTG9nb3skU3RhdGVtZW50fSAhfiAvKGh0dHB8ZnRwfGh0dHBzKTpcLy9pICkgewogICAgICAgICAgICAgICAgJFBhcmFteyRTdGF0ZW1lbnR9ID0gJFdlYlBhdGggLiAkUHVibGljTG9nb3skU3RhdGVtZW50fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQYXJhbXskU3RhdGVtZW50fSA9ICRQdWJsaWNMb2dveyRTdGF0ZW1lbnR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgR2VuZXJhdGUgdGhlIG1pbmlmaWVkIENTUyBhbmQgSmF2YVNjcmlwdCBmaWxlcwogICAgIyBhbmQgdGhlIHRhZ3MgcmVmZXJlbmNpbmcgdGhlbSAoc2VlIExheW91dExvYWRlcikKICAgICRTZWxmLT5Mb2FkZXJDcmVhdGVDdXN0b21lckNTU0NhbGxzKCk7CgogICAgIyBMb2FkIGNvbG9ycyBiYXNlZCBvbiBTa2luIHNlbGVjdGlvbgogICAgIyBkZWZpbmUgY29sb3Igc2NoZW1lCiAgICAkU2VsZi0+e1VzZXJTa2lufSB8fD0gJ2RlZmF1bHQnOwogICAgbXkgJENvbG9yRGVmaW5pdGlvbnM7CiAgICBpZiAoICRTZWxmLT57VXNlclNraW59ICYmICRTZWxmLT57VXNlclNraW59IG5lICdkZWZhdWx0JyApIHsKICAgICAgICAkQ29sb3JEZWZpbml0aW9ucyA9ICRDb25maWdPYmplY3QtPkdldCgiUHVibGljU2tpbkNvbG9yRGVmaW5pdGlvbjo6JFNlbGYtPntVc2VyU2tpbn0iKSAvLyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpY0NvbG9yRGVmaW5pdGlvbnMnKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRDb2xvckRlZmluaXRpb25zID0gJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWNDb2xvckRlZmluaXRpb25zJyk7CiAgICB9CgogICAgZm9yIG15ICRDb2xvciAoIHNvcnQga2V5cyAleyRDb2xvckRlZmluaXRpb25zfSApIHsKICAgICAgICAkUGFyYW17Q29sb3JEZWZpbml0aW9uc30gLj0gIi0tY29sJENvbG9yOiRDb2xvckRlZmluaXRpb25zLT57ICRDb2xvciB9OyI7CiAgICB9CgogICAgJFNlbGYtPl9BZGRIZWFkZXJzVG9SZXNwb25zZU9iamVjdCgKICAgICAgICBDb250ZW50RGlzcG9zaXRpb24gICAgICAgICAgICA9PiAkUGFyYW17Q29udGVudERpc3Bvc2l0aW9ufSwKICAgICAgICBEaXNhYmxlSUZyYW1lT3JpZ2luUmVzdHJpY3RlZCA9PiAkUGFyYW17RGlzYWJsZUlGcmFtZU9yaWdpblJlc3RyaWN0ZWR9LAogICAgKTsKCiAgICAjIGNyZWF0ZSAmIHJldHVybiBvdXRwdXQKICAgIHJldHVybiAkU2VsZi0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAiUHVibGljSGVhZGVyJFR5cGUiLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKfQoKc3ViIFB1YmxpY0Zvb3RlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRUeXBlICAgICAgICAgID0gJFBhcmFte1R5cGV9ICAgICAgICAgICB8fCAnJzsKICAgIG15ICRIYXNEYXRlcGlja2VyID0gJFNlbGYtPntIYXNEYXRlcGlja2VyfSB8fCAwOwoKICAgICMgR2VuZXJhdGUgdGhlIG1pbmlmaWVkIENTUyBhbmQgSmF2YVNjcmlwdCBmaWxlcwogICAgIyBhbmQgdGhlIHRhZ3MgcmVmZXJlbmNpbmcgdGhlbSAoc2VlIExheW91dExvYWRlcikKICAgICRTZWxmLT5Mb2FkZXJDcmVhdGVDdXN0b21lckpTQ2FsbHMoKTsKICAgICRTZWxmLT5Mb2FkZXJDcmVhdGVKYXZhU2NyaXB0VHJhbnNsYXRpb25EYXRhKCk7CiAgICAkU2VsZi0+TG9hZGVyQ3JlYXRlSmF2YVNjcmlwdFRlbXBsYXRlRGF0YSgpOwoKICAgICMgZ2V0IGRhdGVwaWNrZXIgZGF0YSwgaWYgbmVlZGVkIGluIG1vZHVsZQogICAgaWYgKCRIYXNEYXRlcGlja2VyKSB7CiAgICAgICAgbXkgJFZhY2F0aW9uRGF5cyAgPSAkU2VsZi0+RGF0ZXBpY2tlckdldFZhY2F0aW9uRGF5cygpOwogICAgICAgIG15ICRUZXh0RGlyZWN0aW9uID0gJFNlbGYtPntMYW5ndWFnZU9iamVjdH0tPntUZXh0RGlyZWN0aW9ufSB8fCAnJzsKCiAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAkU2VsZi0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnRGF0ZXBpY2tlcicsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFZhY2F0aW9uRGF5cyA9PiAkVmFjYXRpb25EYXlzLAogICAgICAgICAgICAgICAgSXNSVEwgICAgICAgID0+ICggJFRleHREaXJlY3Rpb24gZXEgJ3J0bCcgKSA/IDEgOiAwLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBDaGVjayBpZiB2aWRlbyBjaGF0IGlzIGVuYWJsZWQuCiAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICdLZXJuZWw6OlN5c3RlbTo6VmlkZW9DaGF0JywgU2lsZW50ID0+IDEgKSApIHsKICAgICAgICAkUGFyYW17VmlkZW9DaGF0RW5hYmxlZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlkZW9DaGF0JyktPklzRW5hYmxlZCgpCiAgICAgICAgICAgIHx8ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdVbml0VGVzdE1vZGUnICkgLy8gMDsKICAgIH0KCiAgICAjIENoZWNrIGlmIHB1YmxpYyB1c2VyIGhhcyBwZXJtaXNzaW9uIGZvciBjaGF0LgogICAgbXkgJFB1YmxpY0NoYXRQZXJtaXNzaW9uOwogICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAnS2VybmVsOjpTeXN0ZW06OkNoYXQnLCBTaWxlbnQgPT4gMSApICkgewoKICAgICAgICBteSAkUHVibGljQ2hhdENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljRnJvbnRlbmQ6Ok1vZHVsZScpLT57J1B1YmxpY0NoYXQnfSB8fCB7fTsKICAgICAgICAkUHVibGljQ2hhdFBlcm1pc3Npb24gPSAxOwogICAgfQoKICAgICMgQXV0b0NvbXBsZXRlLUNvbmZpZwogICAgbXkgJEF1dG9jb21wbGV0ZUNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnQXV0b0NvbXBsZXRlOjpQdWJsaWMnKTsKCiAgICBmb3IgbXkgJENvbmZpZ0VsZW1lbnQgKCBzb3J0IGtleXMgJXskQXV0b2NvbXBsZXRlQ29uZmlnfSApIHsKICAgICAgICAkQXV0b2NvbXBsZXRlQ29uZmlnLT57JENvbmZpZ0VsZW1lbnR9LT57QnV0dG9uVGV4dH0KICAgICAgICAgICAgPSAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQXV0b2NvbXBsZXRlQ29uZmlnLT57JENvbmZpZ0VsZW1lbnR9e0J1dHRvblRleHR9ICk7CiAgICB9CgogICAgbXkgJFdlYlBhdGggPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpXZWJQYXRoJyk7CgogICAgIyBMb2FkIHJpY2ggdGV4dCBsaWJyYXJpZXMgb25seSB3aGVuIGEgUlRFIGhhcyBiZWVuIHNldCB1cAogICAgaWYgKCAkU2VsZi0+e0hhc1JpY2hUZXh0RWRpdG9yfSApIHsKCiAgICAgICAgIyBja2VkaXRvci5qcyBpcyBhbHdheXMgbG9hZGVkIHdoZW4gcmljaCB0ZXh0IGlzIGVuYWJsZWQKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JpY2hUZXh0SlMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEpTRGlyZWN0b3J5ID0+ICcnLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ2NrZWRpdG9yLmpzJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGFzc2VtYmxlIHRoZSBwYXRoIHRvIHRoZSB0cmFuc2xhdGlvbiBmaWxlIGJhc2VkIG9uIHRoZSByZWxldmFudCBVUkxzCiAgICAgICAgbXkgJFJpY2hUZXh0UGF0aCA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6OlJpY2hUZXh0UGF0aCcpOwogICAgICAgIGlmICggJFJpY2hUZXh0UGF0aCAmJiAkV2ViUGF0aCApIHsKICAgICAgICAgICAgbXkgJEhvbWUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0hvbWUnKTsKICAgICAgICAgICAgJFJpY2hUZXh0UGF0aCA9fiBzLyRXZWJQYXRoLy9zOwogICAgICAgICAgICBteSAkVHJhbnNsYXRpb25GaWxlID0gbGMgIiRTZWxmLT57VXNlckxhbmd1YWdlfS5qcyI7CiAgICAgICAgICAgICRUcmFuc2xhdGlvbkZpbGUgPX4gcy9fLy0vZzsKICAgICAgICAgICAgbXkgJFRyYW5zbGF0aW9uRnVsbFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKAogICAgICAgICAgICAgICAgJEhvbWUsCiAgICAgICAgICAgICAgICAndmFyL2h0dHBkL2h0ZG9jcycsCiAgICAgICAgICAgICAgICAkUmljaFRleHRQYXRoLAogICAgICAgICAgICAgICAgJ3RyYW5zbGF0aW9ucycsCiAgICAgICAgICAgICAgICAkVHJhbnNsYXRpb25GaWxlCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGxvYWQgdGhlIHRyYW5zbGF0aW9uIGZpbGUgb25seSBpZiBpdCBleGlzdHMKICAgICAgICAgICAgaWYgKCAtZiAkVHJhbnNsYXRpb25GdWxsUGF0aCApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dFRyYW5zbGF0aW9uSlMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBKU0RpcmVjdG9yeSA9PiAndHJhbnNsYXRpb25zLycsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRUcmFuc2xhdGlvbkZpbGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgSlMgZGF0YQogICAgbXkgJUpTQ29uZmlnID0gKAogICAgICAgIEJhc2VsaW5rICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0Jhc2VsaW5rfSwKICAgICAgICBDR0lIYW5kbGUgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntDR0lIYW5kbGV9LAogICAgICAgIFdlYlBhdGggICAgICAgICAgICAgICAgICA9PiAkV2ViUGF0aCwKICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFN1YmFjdGlvbiAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1N1YmFjdGlvbn0sCiAgICAgICAgU2Vzc2lvbklEQ29va2llICAgICAgICAgID0+ICRTZWxmLT57U2Vzc2lvbklEQ29va2llfSwKICAgICAgICBTZXNzaW9uTmFtZSAgICAgICAgICAgICAgPT4gJFNlbGYtPntTZXNzaW9uTmFtZX0sCiAgICAgICAgU2Vzc2lvbklEICAgICAgICAgICAgICAgID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBTZXNzaW9uVXNlQ29va2llICAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdTZXNzaW9uVXNlQ29va2llJyksCiAgICAgICAgQ2hhbGxlbmdlVG9rZW4gICAgICAgICAgID0+ICRTZWxmLT57VXNlckNoYWxsZW5nZVRva2VufSwKICAgICAgICBDdXN0b21lclBhbmVsU2Vzc2lvbk5hbWUgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdDdXN0b21lclBhbmVsU2Vzc2lvbk5hbWUnKSwgICAgIyBCb3Jyb3cgdGhlIEN1c3RvbWVyIGNvbmZpZ3VyYXRpb24KICAgICAgICBVc2VyTGFuZ3VhZ2UgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VyTGFuZ3VhZ2V9LAogICAgICAgIENoZWNrRW1haWxBZGRyZXNzZXMgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0NoZWNrRW1haWxBZGRyZXNzZXMnKSwKICAgICAgICBJbnB1dEZpZWxkc0FjdGl2YXRlZCAgICAgPT4gMSwKICAgICAgICBBdXRvY29tcGxldGUgICAgICAgICAgICAgPT4gJEF1dG9jb21wbGV0ZUNvbmZpZywKICAgICAgICBWaWRlb0NoYXRFbmFibGVkICAgICAgICAgPT4gJFBhcmFte1ZpZGVvQ2hhdEVuYWJsZWR9LAogICAgICAgIFdlYk1heEZpbGVVcGxvYWQgICAgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1dlYk1heEZpbGVVcGxvYWQnKSwKICAgICAgICBQdWJsaWNDaGF0UGVybWlzc2lvbiAgICAgPT4gJFB1YmxpY0NoYXRQZXJtaXNzaW9uLAogICAgKTsKCiAgICBmb3IgbXkgJENvbmZpZyAoIHNvcnQga2V5cyAlSlNDb25maWcgKSB7CiAgICAgICAgJFNlbGYtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJENvbmZpZywKICAgICAgICAgICAgVmFsdWUgPT4gJEpTQ29uZmlneyRDb25maWd9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjcmVhdGUgJiByZXR1cm4gb3V0cHV0CiAgICByZXR1cm4gJFNlbGYtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gIlB1YmxpY0Zvb3RlciRUeXBlIiwKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/PublicOverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6UHVibGljT3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpKU09OJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IFwlUGFyYW07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CgogICAgIyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OicgLiAkU2VsZi0+e0FjdGlvbn07CiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEJhY2tlbmRDb25maWdLZXkpOwoKICAgICMgY2hlY2sgZm9yIGZpbHRlcgogICAgbXkgJEZpbHRlck5hbWUgPSBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfSApID8gJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfS0+e05hbWV9IDogJ0FsbCc7CgogICAgIyBnZXQgcGVybWlzc2lvbiBjb25kaXRpb24gZm9yIGZpbHRlcgogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnICA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpOwogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29sdW1ucyA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucycpOwoKICAgICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0gPSBbXTsKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnKSApIHsKICAgICAgICBQRVJNQ09ORjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0NvdW50ZXIgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJZGVudGlmaWVyICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkQ29uZmlnQ291bnRlciApOwogICAgICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+eyRDb25maWdJZGVudGlmaWVyfTsKICAgICAgICAgICAgbmV4dCBQRVJNQ09ORiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcpOwoKICAgICAgICAgICAgaWYgKCAkRmlsdGVyTmFtZSBlcSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e05hbWV9ICYmIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbHVtbnMpICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfSA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbHVtbnMtPnskQ29uZmlnSWRlbnRpZmllcn0gLy8gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCAhJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogJiYgSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25zQ29sdW1ucykgKSB7CiAgICAgICAgICAgICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMnKS0+e0RlZmF1bHR9IC8vIFtdOwogICAgICAgIH0KICAgICAgICAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSA9ICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX07CiAgICB9CgogICAgIyBhbHdheXMgc2V0IGNvbmZpZyBpdGVtIG51bWJlcgogICAgaWYgKCAhZ3JlcCB7ICRfIGVxICdOdW1iZXInIH0gJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0tPkAqICkgewogICAgICAgIHVuc2hpZnQgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0tPkAqLCAnTnVtYmVyJzsKICAgIH0KICAgIGlmICggIWdyZXAgeyAkXyBlcSAnTnVtYmVyJyB9ICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqICkgewogICAgICAgIHVuc2hpZnQgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCosICdOdW1iZXInOwogICAgfQoKICAgICMgZ2V0IG5lY2Vzc2FyeSBkeW5hbWljIGZpZWxkIG9iamVjdHMKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBjb2xsZWN0IGR5bmFtaWMgZmllbGRzIGFuZCBzZXQgYXZhaWxhYmxlIGFuZCB2YWxpZCBmaWx0ZXIgYW5kIHNvcnRhYmxlIGNvbHVtbnMKICAgIERZTkFNSUNGSUVMRE5BTUU6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiApIHsKCiAgICAgICAgbXkgJEZpZWxkTmFtZTsKICAgICAgICBpZiAoICREeW5hbWljRmllbGROYW1lID1+IG17IER5bmFtaWNGaWVsZF8oPzxGaWVsZE5hbWU+W0EtWmEtejAtOVwtXSspIH14bXMgKSB7CiAgICAgICAgICAgICRGaWVsZE5hbWUgPSAkK3tGaWVsZE5hbWV9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEROQU1FOwogICAgICAgIH0KCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBzdG9yZSBmaWVsZCBjb25maWcKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnSVRTTUNvbmZpZ0l0ZW0nICkgewogICAgICAgICAgICBwdXNoICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+QCosICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZpbHRyYWJsZSBhbmQgc29ydGFibGUgYmVoYXZpb3JzCiAgICAgICAgZm9yIG15ICRCZWhhdmlvciAocXcoRmlsdHJhYmxlIFNvcnRhYmxlKSkgewoKICAgICAgICAgICAgbXkgJEhhc0JlaGF2aW9yID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gIklzJEJlaGF2aW9yIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSGFzQmVoYXZpb3IpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57IkF2YWlsYWJsZSR7QmVoYXZpb3J9Q29sdW1ucyJ9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBoYXNoIHdpdGggYWxsIHZhbGlkIHNvcnRhYmxlIGNvbHVtbnMgKHRha2VuIGZyb20gSVRTTUNvbmZpZ0l0ZW1TZWFyY2gpCiAgICAjIFNvcnRCeSAgPT4gJ0FnZScsICAgIyBDcmVhdGVkfE51bWJlcnxDaGFuZ2VkfE5hbWV8RGVwbFN0YXRlfEN1ckRlcGxTdGF0ZQogICAgIyB8SW5jaVN0YXRlfEN1ckluY2lTdGF0ZQogICAgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30gPSB7CiAgICAgICAgJ0FnZScgICAgICAgICAgPT4gMSwKICAgICAgICAnTnVtYmVyJyAgICAgICA9PiAxLAogICAgICAgICdOYW1lJyAgICAgICAgID0+IDEsCiAgICAgICAgJ0NyZWF0ZWQnICAgICAgPT4gMSwKICAgICAgICAnTGFzdENoYW5nZWQnICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30gPSB7CiAgICAgICAgZGVmaW5lZCAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9CiAgICAgICAgPyAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT4lKgogICAgICAgIDogKCksCiAgICAgICAgJ0NsYXNzJyAgICAgICAgPT4gMSwKICAgICAgICAnRGVwbFN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJEZXBsU3RhdGUnID0+IDEsCiAgICAgICAgJ0luY2lTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VySW5jaVN0YXRlJyA9PiAxLAogICAgfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBBY3Rpb25Sb3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIG15ICRCdWxrRmVhdHVyZSA9IDA7CiAgICBpZiAoICRQYXJhbXtCdWxrfSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmUnKSApIHsKICAgICAgICBteSBAR3JvdXBzOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSApIHsKICAgICAgICAgICAgQEdyb3VwcyA9IEB7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhQEdyb3VwcyApIHsKICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfHwge307CiAgICBpZiAoICRDb2x1bW5zICYmIElzSGFzaFJlZldpdGhEYXRhKCRDb2x1bW5zKSApIHsKCiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29sdW1uICggc29ydCBrZXlzICV7JENvbHVtbnN9ICkgewoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIHRyYW5zbGF0ZWQgaW4gdGhlIG5leHQgYmxvY2sKICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXM7CgogICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQgPSAkQ29sdW1uOwogICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCRUcmFuc2xhdGVkV29yZCksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIGR5bmFtaWMgZmllbGQgY29sdW1ucwogICAgbXkgJENvbHVtbnNEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgKTsKCiAgICBpZiAoICRDb2x1bW5zRHluYW1pY0ZpZWxkICYmIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29sdW1uc0R5bmFtaWNGaWVsZCkgKSB7CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBAeyRDb2x1bW5zRHluYW1pY0ZpZWxkfSApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5EeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIFNvcnRPcmRlckJhciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAnJzsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgSWYgJFBhcmFte0VuYWJsZUNvbHVtbkZpbHRlcnN9IGlzIG5vdCBzZW50LCB3ZSB3YW50IHRvIGRpc2FibGUgYWxsIGZpbHRlcnMKICAgICMgICBmb3IgdGhlIGN1cnJlbnQgc2NyZWVuLiBXZSBsb2NhbGl6ZSB0aGUgc2V0dGluZyBmb3IgdGhpcyBzdWIgYW5kIGNoYW5nZSBpdAogICAgIyAgIGFmdGVyIHRoYXQsIGlmIG5lZWRlZC4gVGhlIG9yaWdpbmFsIHZhbHVlIHdpbGwgYmUgcmVzdG9yZWQgYWZ0ZXIgdGhpcyBmdW5jdGlvbi4KICAgIGxvY2FsICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30gPSAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9OwogICAgaWYgKCAhJFBhcmFte0VuYWJsZUNvbHVtbkZpbHRlcnN9ICkgewogICAgICAgICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30gPSB7fTsgICAgIyBkaXNhYmxlIGFsbCBjb2x1bW4gZmlsdGVycwogICAgfQoKICAgIGZvciBteSAkSXRlbSAocXcoQ29uZmlnSXRlbUlEcyBQYWdlU2hvd24gU3RhcnRIaXQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRJdGVtfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEl0ZW0hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBpbmNpZGVudCBzaWduYWxzCiAgICBteSAlSW5jaVNpZ25hbHMgPSAoCiAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCd3YXJuaW5nJykgICAgID0+ICd5ZWxsb3dsZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnaW5jaWRlbnQnKSAgICA9PiAncmVkbGVkJywKICAgICk7CgogICAgIyBzdG9yZSBkZXBsb3ltZW50IHNpZ25hbHMKICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbG95bWVudFN0YXRlc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIHNldCBkZXBsb3ltZW50IHN0eWxlIGNvbG9ycwogICAgbXkgJFN0eWxlQ2xhc3NlcyA9ICcnOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc3tDb2xvcn07CiAgICAgICAgbXkgKCRDb2xvcikgPSAkR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY29udmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvbnZlcnQgdG8gbG93ZXIgY2FzZQogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9ICggbGMgJENvbG9yICkgPX4gcy9bXjAtOWEtZl0vL21zZ3I7CgogICAgICAgICMgYWRkIHRvIHN0eWxlIGNsYXNzZXMgc3RyaW5nCiAgICAgICAgJFN0eWxlQ2xhc3NlcyAuPSAiCiAgICAgICAgICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIGlmIGJ1bGsgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBteSAkQnVsa0ZlYXR1cmUgPSAwOwogICAgaWYgKCAkUGFyYW17QnVsa30gJiYgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlJykgKSB7CiAgICAgICAgbXkgQEdyb3VwczsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgKSB7CiAgICAgICAgICAgIEBHcm91cHMgPSBAeyAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpIH07CiAgICAgICAgfQogICAgICAgIGlmICggIUBHcm91cHMgKSB7CiAgICAgICAgICAgICRCdWxrRmVhdHVyZSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIG15IEBDb25maWdJdGVtQm94OwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIGlmICggJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fSAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkgKSB7CgogICAgICAgICAgICAjIEdldCBjb25maWcgaXRlbSBkYXRhLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtUmVmLT4lKjsKCiAgICAgICAgICAgICMgc2V0IGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFNpZ25hbH0gPSAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVNpZ25hbH0gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgICAgICAjIGZpbGwgY29sdW1uIG5hbWUgYXR0cmlidXRlIHdpdGggY29ycmVzcG9uZGluZyBpdGVtIGF0dHJpYnV0ZQogICAgICAgICAgICAkQ29uZmlnSXRlbXtDcmVhdGVkfSAgICAgPSAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17TGFzdENoYW5nZWR9ID0gJENvbmZpZ0l0ZW17Q2hhbmdlVGltZX07CgogICAgICAgICAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICAgICAgICAgIG15ICVQb3NzaWJsZUFjdGlvbnM7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgICAgICMgZ2V0IGFsbCByZWdpc3RlcmVkIEFjdGlvbnMKICAgICAgICAgICAgaWYgKCByZWYgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1vZHVsZScpIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICBteSAlQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNb2R1bGUnKSB9OwoKICAgICAgICAgICAgICAgICMgb25seSB1c2UgdGhvc2UgQWN0aW9ucyB0aGF0IHN0YXRzIHdpdGggQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgICAgJVBvc3NpYmxlQWN0aW9ucyA9IG1hcCB7ICsrJENvdW50ZXIgPT4gJF8gfQogICAgICAgICAgICAgICAgICAgIGdyZXAgeyBzdWJzdHIoICRfLCAwLCBsZW5ndGggJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nICkgZXEgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nIH0KICAgICAgICAgICAgICAgICAgICBzb3J0IGtleXMgJUFjdGlvbnM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICVBY2xBY3Rpb24gPSAlUG9zc2libGVBY3Rpb25zOwoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUJveCwgXCVDb25maWdJdGVtOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGNvbHVtbnNlbmFibGVkIGlzIGEgZmlsbGVkIGFycmF5IHJlZmVyZW5jZAogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ICkgKSB7CgogICAgICAgICMgY2hlY2sgaWYgY29sdW1uIGlzIHJlYWxseSBmaWx0ZXJhYmxlCiAgICAgICAgQ09MVU1OTkFNRToKICAgICAgICBmb3IgbXkgJENvbHVtbk5hbWUgKCBAeyAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSB9ICkgewogICAgICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1uTmFtZX07CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30sCiAgICApOwoKICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0xpbmtQYWdlJywKICAgICAgICBWYWx1ZSA9PiAkUGFyYW17TGlua1BhZ2V9LAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdEb2N1bWVudENvbnRlbnQnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBhcnJheSB0byBzYXZlIHRoZSBjb2x1bW4gbmFtZXMgdG8gZG8gdGhlIHF1ZXJ5CiAgICBteSBAQ29sID0gQHsgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gfTsKCiAgICAjIGRlZmluZSBzcGVjaWFsIGNvbmZpZyBpdGVtIGNvbHVtbnMKICAgIG15ICVTcGVjaWFsQ29sdW1ucyA9ICgKICAgICAgICBOdW1iZXIgICAgICAgID0+IDEsCiAgICAgICAgQ3VyRGVwbFNpZ25hbCA9PiAxLAogICAgICAgIEN1ckluY2lTaWduYWwgPT4gMSwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgJFBhcmFte09yZGVyQnl9ID0gJFBhcmFte09yZGVyQnl9IHx8ICdVcCc7CiAgICAkUGFyYW17U29ydEJ5fSAgPSAkUGFyYW17U29ydEJ5fSAgfHwgJ051bWJlcic7CgogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gc2NhbGFyIEBDb25maWdJdGVtQm94OwogICAgaWYgKCRDb25maWdJdGVtRGF0YSkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdUYWJsZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU3R5bGVDbGFzc2VzID0+ICRTdHlsZUNsYXNzZXMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnVGFibGVIZWFkZXInICk7CgogICAgICAgIGlmICgkQnVsa0ZlYXR1cmUpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0J1bGtOYXZCYXInLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJENTUyA9ICcnOwoKICAgICAgICAjIHNob3cgc3BlY2lhbCBjb25maWcgaXRlbSBjb2x1bW5zLCBpZiBuZWVkZWQKICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sKSB7CiAgICAgICAgICAgIG15ICRTdGF0aWNDb2x1bW4gPSAhJENvdW50ZXI7CiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld0hlYWRlcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkQ1NTID0gJENvbHVtbiAuICggJFN0YXRpY0NvbHVtbiA/ICcgU3RhdGljQ29sdW1uJyA6ICcnICk7CiAgICAgICAgICAgIG15ICRUaXRsZSAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDb2x1bW4pOwogICAgICAgICAgICBteSAkT3JkZXJCeSA9ICRQYXJhbXtPcmRlckJ5fTsKCiAgICAgICAgICAgICMgVHJhbnNmb3JtIGZpbHRlciBuYW1lIHRvIGNvbHVtbiBuYW1lCiAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX0gPSAnTGFzdENoYW5nZWQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG91dHB1dCBvdmVyYWxsIGJsb2NrIHNvIE51bWJlciBhcyB3ZWxsIGFzIG90aGVyIGNvbHVtbnMgY2FuIGJlIG9yZGVyZWQKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRTcGVjaWFsQ29sdW1uc3skQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICYmICggJFBhcmFte1NvcnRCeX0gZXEgJENvbHVtbiApICkgewogICAgICAgICAgICAgICAgICAgIG15ICRUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlIG9yZGVyIGZvciBzb3J0aW5nIGNvbHVtbi4KICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICRPcmRlckJ5IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRPcmRlckJ5IGVxICdEb3duJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGRlc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgJFRpdGxlIC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBjb2x1bW4gbmFtZSB0byB3cml0ZSBpdCBpbiB0aGUgY3VycmVudCBsYW5ndWFnZQogICAgICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JENvbHVtbn0gfHwKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJPdmVydmlld05hdkJhclBhZ2UkQ29sdW1uIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgaHRtbCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBzb3J0YWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57U3RvcmVkRmlsdGVyc30gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMganVzdCBmaWx0ZXJhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2hvdyB0aGUgREZzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgICRUaXRsZSA9ICRMYWJlbDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSA9ICRMYWJlbDsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICggJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICkgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICRPcmRlckJ5IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJsZVNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX1NvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE5hbWUgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgbXkgJENTUyAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkTmFtZTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJsZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19Ob3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdUYWJsZUJvZHknICk7CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ05vQ29uZmlnSXRlbUZvdW5kJyApOwogICAgfQoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZpbHRlciBzZWxlY3Rpb24KICAgIGlmICggJFBhcmFte0ZpbHRlcnN9ICkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVycycsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQE5hdkJhckZpbHRlcnM7CiAgICAgICAgZm9yIG15ICRQcmlvICggc29ydCBrZXlzICV7ICRQYXJhbXtGaWx0ZXJzfSB9ICkgewogICAgICAgICAgICBwdXNoIEBOYXZCYXJGaWx0ZXJzLCAkUGFyYW17RmlsdGVyc30tPnskUHJpb307CiAgICAgICAgfQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVyJywKICAgICAgICApOwogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICBpZiAoICRDb3VudCA9PSBzY2FsYXIgQE5hdkJhckZpbHRlcnMgKSB7CiAgICAgICAgICAgICAgICAkRmlsdGVyLT57Q1NTfSA9ICdMYXN0JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXJJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAkRmlsdGVyLT57RmlsdGVyfSBlcSAkUGFyYW17RmlsdGVyfSApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVySXRlbVNlbGVjdGVkTm90JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkQ29uZmlnSXRlbVJlZiAoQENvbmZpZ0l0ZW1Cb3gpIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgIG15ICVDb25maWdJdGVtID0gJXskQ29uZmlnSXRlbVJlZn07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICBEYXRhID0+IHslQ29uZmlnSXRlbX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgICAgIGlmICgkQnVsa0ZlYXR1cmUpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdSb3cnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgICAgICBEYXRhID0+IHslQ29uZmlnSXRlbX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgICAgICMgc2F2ZSBjb2x1bW4gY29udGVudAogICAgICAgIG15ICREYXRhVmFsdWU7CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgIyBzaG93IGFsbCBuZWVkZWQgY29sdW1ucwogICAgICAgIENPTkZJR0lURU1DT0xVTU46CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ29sdW1uIChAQ29sKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJFN0YXRpY0NvbHVtbiA9ICEkQ291bnRlcjsKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1Db2x1bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZENvbmZpZ0l0ZW1EYXRhJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRTcGVjaWFsQ29sdW1uc3skQ29uZmlnSXRlbUNvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29uZmlnSXRlbUNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY0NvbHVtbiA9PiAkU3RhdGljQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdDcmVhdGVkQnknICkgewoKICAgICAgICAgICAgICAgICAgICBteSAlQ29uZmlnSXRlbUNyZWF0ZWRCeUluZm8gPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkQ29uZmlnSXRlbXtDcmVhdGVCeX0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZENvbmZpZ0l0ZW1DcmVhdGVkQnknLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtQ3JlYXRlZEJ5SW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY0NvbHVtbiA9PiAkU3RhdGljQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNQ09MVU1OOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRCbG9ja1R5cGUgPSAnJzsKICAgICAgICAgICAgICAgIG15ICRDU1NDbGFzcyAgPSAkU3RhdGljQ29sdW1uID8gJ1N0YXRpY0NvbHVtbicgOiAnJzsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnRGVwbFN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0luY2lTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDbGFzcycKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEJsb2NrVHlwZSA9ICdUcmFuc2xhdGFibGUnOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdDcmVhdGVkJyB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ2hhbmdlZCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJEJsb2NrVHlwZSA9ICdUaW1lJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKCiAgICAgICAgICAgICAgICAgICAgIyBJZiB2YWx1ZSBpcyBpbiBkYXRlIGZvcm1hdCwgY2hhbmdlIGJsb2NrIHR5cGUgdG8gJ1RpbWUnIHNvIGl0IGNhbiBiZSBsb2NhbGl6ZWQuIFNlZSBidWcjMTQ1NDIuCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICREYXRhVmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJERhdGFWYWx1ZSA9fiAvXlxkXGRcZFxkLShcZHxcZFxkKS0oXGR8XGRcZClccyhcZHxcZFxkKTooXGR8XGRcZCk6KFxkfFxkXGQpJC8KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEJsb2NrVHlwZSA9ICdUaW1lJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiUmVjb3JkQ29uZmlnSXRlbUNvbHVtbiRCbG9ja1R5cGUiLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljVmFsdWUgPT4gJERhdGFWYWx1ZSB8fCAnLScsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ1NTQ2xhc3MgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICAgICAgbXkgJERGQ29sdW1uID0gJENvbmZpZ0l0ZW1Db2x1bW47CiAgICAgICAgICAgICAgICAkREZDb2x1bW4gPX4gcy9EeW5hbWljRmllbGRfLy9nOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRERkNvbHVtbjsKCiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgdmFsdWUKICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW17VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZU1heENoYXJzICAgICAgPT4gMjAsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZExpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e0xpbmt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRQbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX1BsYWluJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBhY3Rpb24gaXRlbXMgYXMganMKICAgICAgICBpZiAoICRDb25maWdJdGVte0FjdGlvbkl0ZW1zfSApIHsKCiAgICAgICAgICAgICMgcmVwbGFjZSBUVCBkaXJlY3RpdmVzIGZyb20gc3RyaW5nIHdpdGggdmFsdWVzCiAgICAgICAgICAgIGZvciBteSAkQWN0aW9uSXRlbSAoIEB7ICRDb25maWdJdGVte0FjdGlvbkl0ZW1zfSB9ICkgewogICAgICAgICAgICAgICAgJEFjdGlvbkl0ZW0tPntMaW5rfSA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkQWN0aW9uSXRlbS0+e0xpbmt9LAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgJEFjdGlvblJvd0NvbmZpZ0l0ZW1zeyAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9IH0gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKCBEYXRhID0+ICRDb25maWdJdGVte0FjdGlvbkl0ZW1zfSApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1BY3Rpb25Sb3cuJyAuICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGNvbHVtbiBmaWx0ZXIgZm9ybSwgdG8gY29ycmVjdGx5IGZpbGwgdGhlIGNvbHVtbiBmaWx0ZXJzIGlzIG5lY2Vzc2FyeSB0byBwYXNzIGVhY2gKICAgICMgICAgb3ZlcnZpZXcgc29tZSBpbmZvcm1hdGlvbiBpbiB0aGUgQUpBWCBjYWxsLCBmb3IgZXhhbXBsZSB0aGUgZml4ZWQgRmlsdGVycyBvciBOYXZCYXJGaWx0ZXJzCiAgICAjICAgIGFuZCBhbHNvIG90aGVyIHZhbHVlcyBsaWtlIHRoZSBRdWV1ZSBpbiBBZ2VudElUU01Db25maWdJdGVtUXVldWUsIG90aGVyd2lzZSB0aGUgZmlsdGVycyB3aWxsIGJlCiAgICAjICAgIGZpbGxlZCB3aXRoIGRlZmF1bHQgcmVzdHJpY3Rpb25zLCByZXN1bHRpbmcgaW4gbW9yZSBvcHRpb25zIHRoYW4gdGhlIG9uZXMgdGhhdCB0aGUKICAgICMgICAgYXZhaWxhYmxlIGNvbmZpZyBpdGVtcyBzaG91bGQgcHJvdmlkZSwgc2VlIEJ1ZyM5OTAyCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0gKSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCBzb3J0IGtleXMgJXsgJFBhcmFte0NvbHVtbkZpbHRlckZvcm19IH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBFbGVtZW50TmFtZSAgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgRWxlbWVudFZhbHVlID0+ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfS0+eyRFbGVtZW50fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdXNlIHRlbXBsYXRlCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljSVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEhlYWRlckNvbHVtbiA9ICRQYXJhbXtIZWFkZXJDb2x1bW59OwoKICAgIHJldHVybiBpZiAhSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0hlYWRlckNvbHVtbn0gKTsKCiAgICBteSAlQ29sdW1uRmlsdGVyVmFsdWVzOwogICAgbXkgJENvbmZpZ0l0ZW1JRHM7CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9ICkgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1JRHMgPSAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfTsKICAgIH0KCiAgICByZXR1cm4gXCVDb2x1bW5GaWx0ZXJWYWx1ZXM7Cn0KCnN1YiBfSW5pdGlhbENvbHVtbkZpbHRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0NvbHVtbk5hbWV9OwogICAgcmV0dXJuIGlmICEkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnsgJFBhcmFte0NvbHVtbk5hbWV9IH07CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkTGFiZWwgPSAkUGFyYW17TGFiZWx9IHx8ICRQYXJhbXtDb2x1bW5OYW1lfTsKICAgICRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkTGFiZWwpOwoKICAgICMgc2V0IGZpeGVkIHZhbHVlcwogICAgbXkgJERhdGEgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnJywKICAgICAgICAgICAgVmFsdWUgPT4gdWMgJExhYmVsLAogICAgICAgIH0sCiAgICBdOwoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnSW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ2xhc3MnCiAgICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgbXkgJENsYXNzID0gJ0NvbHVtbkZpbHRlcic7CiAgICBpZiAoICRQYXJhbXtDc3N9ICkgewogICAgICAgICRDbGFzcyAuPSAnICcgLiAkUGFyYW17Q3NzfTsKICAgIH0KCiAgICAjIGJ1aWxkIHNlbGVjdCBIVE1MCiAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJFBhcmFte0NvbHVtbk5hbWV9LAogICAgICAgIERhdGEgICAgICAgID0+ICREYXRhLAogICAgICAgIENsYXNzICAgICAgID0+ICRDbGFzcywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAkVHJhbnNsYXRpb25PcHRpb24sCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJycsCiAgICApOwogICAgcmV0dXJuICRDb2x1bW5GaWx0ZXJIVE1MOwp9CgpzdWIgRmlsdGVyQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgbXkgJEhlYWRlckNvbHVtbiA9ICRQYXJhbXtIZWFkZXJDb2x1bW59OwoKICAgICMgZ2V0IGNvbHVtbiB2YWx1ZXMgZm9yIHRvIGJ1aWxkIHRoZSBmaWx0ZXJzIGxhdGVyCiAgICBteSAkQ29sdW1uVmFsdWVzID0gJFNlbGYtPl9HZXRDb2x1bW5WYWx1ZXMoCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9LAogICAgICAgIEhlYWRlckNvbHVtbiAgICAgICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgKTsKCiAgICAjIGFwcGx5IHJlc3RyaWN0aW9ucyBmb3IgcHVibGljIHBlcm1pc3Npb24gY29uZGl0aW9ucwogICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDbGFzcycgJiYgJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgZm9yIG15ICRGaWx0ZXJWYWx1ZSAoIGtleXMgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LT4lKiApIHsKICAgICAgICAgICAgaWYgKCAhZ3JlcCB7ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9IGVxICRfIH0gJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59eyRGaWx0ZXJWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgJiYgJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtEZXBsU3RhdGVzfS0+QCogKSB7CiAgICAgICAgZm9yIG15ICRGaWx0ZXJWYWx1ZSAoIGtleXMgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LT4lKiApIHsKICAgICAgICAgICAgaWYgKCAhZ3JlcCB7ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9IGVxICRfIH0gJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtEZXBsU3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59eyRGaWx0ZXJWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJFNlbGVjdGVkVmFsdWUgID0gJyc7CiAgICBteSAkU2VsZWN0ZWRDb2x1bW4gPSAkSGVhZGVyQ29sdW1uOwogICAgaWYgKCAkSGVhZGVyQ29sdW1uICF+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtcyApIHsKICAgICAgICAkU2VsZWN0ZWRDb2x1bW4gLj0gJ0lEcyc7CiAgICB9CgogICAgbXkgJExhYmVsQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJExhYmVsQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtcyApIHsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAkTGFiZWxDb2x1bW4gPX4gc3tcQSBEeW5hbWljRmllbGRfIH17fXhtczsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRMYWJlbENvbHVtbjsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpICkgewogICAgICAgICAgICAkTGFiZWxDb2x1bW4gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRTZWxlY3RlZENvbHVtbiAmJiAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApIHsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICRTZWxlY3RlZFZhbHVlID0gJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0tPlswXTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSApIHsKICAgICAgICAgICAgJFNlbGVjdGVkVmFsdWUgPSAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufS0+e0VxdWFsc307CiAgICAgICAgfQogICAgfQoKICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICBteSAkQ29sdW1uRmlsdGVySlNPTiA9ICRTZWxmLT5fQ29sdW1uRmlsdGVySlNPTigKICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWxDb2x1bW4sCiAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn0sCiAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRWYWx1ZSwKICAgICk7CgogICAgcmV0dXJuICRDb2x1bW5GaWx0ZXJKU09OOwp9CgojID1oZWFkMiBfQ29sdW1uRmlsdGVySlNPTigpCgojICAgICBjcmVhdGVzIGEgSlNPTiBzZWxlY3QgZmlsdGVyIGZvciBjb2x1bW4gaGVhZGVyCgojICAgICBteSAkQ29sdW1uRmlsdGVySlNPTiA9ICRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxPYmplY3QtPl9Db2x1bW5GaWx0ZXJKU09OKAojICAgICAgICAgQ29sdW1uTmFtZSA9PiAnUXVldWUnLAojICAgICAgICAgTGFiZWwgICAgICA9PiAnUXVldWUnLAojICAgICAgICAgQ29sdW1uVmFsdWVzID0+IHsKIyAgICAgICAgICAgICAxID0+ICdQb3N0TWFzdGVyJywKIyAgICAgICAgICAgICAyID0+ICdKdW5rJywKIyAgICAgICAgIH0sCiMgICAgICAgICBTZWxlY3RlZFZhbHVlICcxJywKIyAgICAgKTsKCiMgPWN1dAoKc3ViIF9Db2x1bW5GaWx0ZXJKU09OIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKAogICAgICAgICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSB9ICYmCiAgICAgICAgISRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPnsgJFBhcmFte0NvbHVtbk5hbWV9IC4gJ0lEcycgfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkTGFiZWwgPSAkUGFyYW17TGFiZWx9OwogICAgJExhYmVsID1+IHN7IFxBIER5bmFtaWNGaWVsZF8gfXt9Z3htczsKICAgICRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkTGFiZWwpOwoKICAgICMgc2V0IGZpeGVkIHZhbHVlcwogICAgbXkgJERhdGEgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRGVsZXRlRmlsdGVyJywKICAgICAgICAgICAgVmFsdWUgPT4gdWMgJExhYmVsLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnLScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICctJywKICAgICAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICAgICB9LAogICAgXTsKCiAgICBpZiAoICRQYXJhbXtDb2x1bW5WYWx1ZXN9ICYmIHJlZiAkUGFyYW17Q29sdW1uVmFsdWVzfSBlcSAnSEFTSCcgKSB7CgogICAgICAgIG15ICVWYWx1ZXMgPSAleyAkUGFyYW17Q29sdW1uVmFsdWVzfSB9OwoKICAgICAgICAjIFNldCBwb3NzaWJsZSB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRWYWx1ZUtleSAoIHNvcnQgeyBsYyAkVmFsdWVzeyRhfSBjbXAgbGMgJFZhbHVlc3skYn0gfSBrZXlzICVWYWx1ZXMgKSB7CiAgICAgICAgICAgIHB1c2ggQHskRGF0YX0sIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRWYWx1ZUtleSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZXN7JFZhbHVlS2V5fSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDbGFzcycKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICAjIGJ1aWxkIHNlbGVjdCBIVE1MCiAgICBteSAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uSlNPTigKICAgICAgICBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRQYXJhbXtDb2x1bW5OYW1lfSwKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkRGF0YSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljS2V5JywKICAgICAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAxLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtTZWxlY3RlZFZhbHVlfSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAkVHJhbnNsYXRpb25PcHRpb24sCiAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGUgPT4gJ29mZicsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuICRKU09OOwp9CgpzdWIgX0RlZmF1bHRDb2x1bW5Tb3J0IHsKCiAgICBteSAlRGVmYXVsdENvbHVtbnMgPSAoCiAgICAgICAgQ3VyRGVwbFNpZ25hbCA9PiAxMTAsCiAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAxMTEsCiAgICAgICAgQ2xhc3MgICAgICAgICA9PiAxMTIsCiAgICAgICAgTnVtYmVyICAgICAgICA9PiAxMTMsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAxMTQsCiAgICAgICAgQ3VyRGVwbFN0YXRlICA9PiAxMTUsCiAgICAgICAgQ3VySW5jaVN0YXRlICA9PiAxMTYsCiAgICAgICAgTGFzdENoYW5nZWQgICA9PiAxMTcsCiAgICApOwoKICAgICMgZHluYW1pYyBmaWVsZHMgY2FuIG5vdCBiZSBvbiB0aGUgRGVmYXVsdENvbHVtbnMgc29ydGluZyBoYXNoCiAgICAjIHdoZW4gY29tcGFyaW5nIDIgZHluYW1pYyBmaWVsZHMgc29ydGluZyBtdXN0IGJlIGFscGhhYmV0aWNhbAogICAgaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRhfSAmJiAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gJGEgY21wICRiOwogICAgfQoKICAgICMgd2hlbiBhIGR5bmFtaWMgZmllbGQgaXMgY29tcGFyZWQgdG8gYSBjb25maWcgaXRlbSBhdHRyaWJ1dGUgaXQgbXVzdCBiZSBoaWdoZXIKICAgIGVsc2lmICggISREZWZhdWx0Q29sdW1uc3skYX0gKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyB3aGVuIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGlzIGNvbXBhcmVkIHRvIGEgZHluYW1pYyBmaWVsZCBpdCBtdXN0IGJlIGxvd2VyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGJ9ICkgewogICAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSBkbyBhIG51bWVyaWNhbCBjb21wYXJpc29uIHdpdGggdGhlIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZXMKICAgIHJldHVybiAkRGVmYXVsdENvbHVtbnN7JGF9IDw9PiAkRGVmYXVsdENvbHVtbnN7JGJ9Owp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicITSMConfigItemZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgaWQ9J29vb0NvbnRlbnQnIGNsYXNzPSdBUklBUm9sZU1haW4nPgogICAgWyUgRGF0YS5TdHlsZUNsYXNzZXMgJV0KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGRpdiBjbGFzcz0nb29vV2l0aFN1Yic+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZ1bGxTdWIiKSAlXQogICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXSNbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0jWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiRnVsbFN1YiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzU3ViIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJDbGFzc1N1YiIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0nQ0lJbmZvQmFyJz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbG95bWVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuRGVwbFN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJEZXBsb3ltZW50U3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNpZGVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuSW5jaVN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJJbmNpZGVudFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ3JlYXRlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPjxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3A+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ3JlYXRlZFRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBDaGFuZ2VkIikgfCBodG1sICVdOjwvbGFiZWw+PHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdMaW5rIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJCYWNrbGlua0JveCI+PGEgY2xhc3M9IkJhY2tsaW5rIiB0aXRsZT0iQmFjayB0byBvdmVydmlldyIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtIj48aSBjbGFzcz0ib29vZm8gb29vZm8tYXJyb3dfbCI+PC9pPjxzcGFuPlslIFRyYW5zbGF0ZSgiQmFjayB0byBvdmVydmlldyIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld0xpbmsiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGlkPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGRpdiBpZD0iUGFnZVNlbGVjdGlvbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBhZ2VOYW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoRGF0YS5QYWdlTmFtZSkgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZU5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IHVyaSAlXTtQYWdlPVslIERhdGEuUGFnZU5hbWUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJvb29TIFBhZ2VTZWxlY3Rpb25CdXR0b25bJSBJRiBEYXRhLlNlbGVjdGVkICVdIFNlbGVjdGVkWyUgRU5EICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5QYWdlTmFtZSkgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRzIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkF0dGFjaG1lbnRDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIDxhIGlkPSJBdHRhY2htZW50cyIgaHJlZj0iIyI+PGkgY2xhc3M9J29vb2ZvIG9vb2ZvLWF0dGFjaG1lbnQnPjwvaT5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkF0dGFjaG1lbnRCb3giIGNsYXNzPSJIaWRkZW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtGaWxlbmFtZT1bJSBEYXRhLkZpbGVuYW1lIHwgdXJpICVdO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIChbJSBEYXRhLkZpbGVzaXplIHwgTG9jYWxpemUoJ0ZpbGVzaXplJykgfCBodG1sICVdKTxici8+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudHMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWZXJzaW9ucyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvblNlbGVjdGlvbiAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZlcnNpb25TZWxlY3Rpb24iPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlZlcnNpb25zIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIERhdGEuRHluYW1pY0ZpZWxkSFRNTCAlXQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicHeader.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjwhRE9DVFlQRSBodG1sPgo8aHRtbD4KWyUgSW5zZXJ0VGVtcGxhdGUoIkNvcHlyaWdodC50dCIpICVdClslIEluc2VydFRlbXBsYXRlKCJDdXN0b21lckhUTUxIZWFkLnR0IikgJV0KPGJvZHkgY2xhc3M9Ik5vSmF2YVNjcmlwdCBbJSBEYXRhLkJvZHlDbGFzcyB8IGh0bWwgJV0iIHN0eWxlPSJbJSBEYXRhLkNvbG9yRGVmaW5pdGlvbnMgfCBodG1sICVdIj4KPGRpdiBpZD0ib29vTW9iaWxlSGVhZGVyIj4KICAgIDxpIGlkPSdvb29Nb2JpbGVNZW51JyBjbGFzcz0nb29vZm8gb29vZm8tbWVudSc+PC9pPgogICAgPGltZyBpZD0ib29vTW9iaWxlU2lnbmV0IiBzcmM9IlslIERhdGEuVVJMU2lnbmV0IHwgaHRtbCAlXSI+CjwvZGl2PgojPCEtLSBzdGFydCBDSSBsYXlvdXQgLS0+CiMgICAgPGRpdiBpZD0iSGVhZGVyIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckxvZ28iKSAlXQojICAgICAgICA8ZGl2IGlkPSJMb2dvIj48L2Rpdj4KI1slIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJMb2dvIikgJV0KIyAgICAgICAgPGgxIGNsYXNzPSJDb21wYW55TmFtZSI+CiMgICAgICAgICAgICA8YSBocmVmPSIjIj5bJSBDb25maWcoIkN1c3RvbWVySGVhZGxpbmUiKSAlXTwvYT4KIyAgICAgICAgPC9oMT4KI1slIFJlbmRlckJsb2NrU3RhcnQoIkRlYnVnUlRMQnV0dG9uIikgJV0KIyAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJDb3JlLkRlYnVnLlNpbXVsYXRlUlRMUGFnZSgpOyIgdHlwZT0iYnV0dG9uIj5TaW11bGF0ZSBSVEw8L2J1dHRvbj4KI1slIFJlbmRlckJsb2NrRW5kKCJEZWJ1Z1JUTEJ1dHRvbiIpICVdCiMgICAgPC9kaXY+CiM8IS0tIGVuZCBDSSBsYXlvdXQgLS0+CiM8IS0tIGVuZCBoZWFkZXIgLS0+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iIGFjY2Vzc2tleT0iWyUgRGF0YS5BY2Nlc3NLZXkgfCBodG1sICVdIj48YnV0dG9uPjxzcGFuPiBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj48L2E+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hCb3giKSAlXQogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KICAgICAgICA8ZGl2IGlkPSJvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0xpbmsiKSAlXQogICAgICAgICAgICA8YSBjbGFzcz0iQmFja2xpbmsiIHRpdGxlPSJCYWNrIHRvIG92ZXJ2aWV3IiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW0iPjxpIGNsYXNzPSJvb29mbyBvb29mby1hcnJvd19sIj48L2k+PHNwYW4+WyUgVHJhbnNsYXRlKCJCYWNrIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGluayIpICVdClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hGb3JtIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJvb29JVFNNQ29uZmlnSXRlbVNlYXJjaCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0lUU01Db25maWdJdGVtU2VhcmNoRm9ybSI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZWFyY2hEaWFsb2ciIHZhbHVlPScxJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBlcm1pc3Npb25Db25kaXRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlBlcm1pc3Npb25Db25kaXRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQZXJtaXNzaW9uQ29uZGl0aW9uIj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGVybWlzc2lvbkNvbmRpdGlvbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DbGFzc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNsYXNzSURzIj5bJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3MiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTnVtYmVyIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+WyUgVHJhbnNsYXRlKCJOdW1iZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk5hbWUiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmFtZSI+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbFN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DdXJEZXBsU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZXBsU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlcGxTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2lTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbmNpU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiSW5jaWRlbnQgU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2lTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaEFjdGlvbiIgdHlwZT0ic3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hGb3JtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VhcmNoUmVzdWx0IikgJV0KICAgICAgICBbJSBEYXRhLklUU01Db25maWdJdGVtTGlzdEhUTUwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaFJlc3VsdCIpICVdCiAgICA8L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicFooter.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Gb290ZXInPgogICAgPGRpdj4KICAgICAgICA8ZGl2IGlkPSdvb29Db3B5cmlnaHQnPgogICAgICAgICAgICA8cCBjbGFzcz0nb29vMTBnJz7CqSAyMDE5LTIwMjQgPC9wPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL290b2JvLmRlIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgICAgICAgICA8c3ZnCiAgICAgICAgICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgICAgICAgICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICAgICAgICAgICAgICAgICAgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIgogICAgICAgICAgICAgICAgICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgICAgICAgICAgICAgICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgICAgICAgICAgICAgICAgIHZlcnNpb249IjEuMSIKICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAyNjAuMzggNDAuNjE5OTk5IgogICAgICAgICAgICAgICAgICAgaGVpZ2h0PSI0MC42MTk5OTkiCiAgICAgICAgICAgICAgICAgICB3aWR0aD0iMjYwLjM4IgogICAgICAgICAgICAgICAgICAgaWQ9Im90b2JvLWxvZ28tc2ltcGxlIj4KICAgICAgICAgICAgICAgICAgPG1ldGFkYXRhCiAgICAgICAgICAgICAgICAgICAgIGlkPSJtZXRhZGF0YTEyOTEiPgogICAgICAgICAgICAgICAgICAgIDxyZGY6UkRGPgogICAgICAgICAgICAgICAgICAgICAgPGNjOldvcmsKICAgICAgICAgICAgICAgICAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICAgICAgICAgICAgICAgICAgPC9jYzpXb3JrPgogICAgICAgICAgICAgICAgICAgIDwvcmRmOlJERj4KICAgICAgICAgICAgICAgICAgPC9tZXRhZGF0YT4KICAgICAgICAgICAgICAgICAgPGRlZnMKICAgICAgICAgICAgICAgICAgICAgaWQ9ImRlZnMxMjc3Ij4KICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICA8ZwogICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbC1vcGFjaXR5OjEiCiAgICAgICAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iR3J1cHBlIDI1ODc3IgogICAgICAgICAgICAgICAgICAgICBpZD0iR3J1cHBlXzI1ODc3IgogICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjQ5NjE5NDg4LDAuNTA2ODc0MDcpIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmaWxsLW9wYWNpdHk6MSIKICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjkxLjM3NywtMTU5LjIxOSkiCiAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJQZmFkIDEzNjczIgogICAgICAgICAgICAgICAgICAgICAgIGQ9Im0gNDM2LDE4OC42NzkgYSAyLjA0NiwyLjA0NiAwIDAgMCAtMy42ODYsLTAuODQxIDE2LjM1OSwxNi4zNTkgMCAwIDEgLTI2LjY4MywwLjAxMiAyLjA0NywyLjA0NyAwIDAgMCAtMy4zMzQsMi4zNzUgMjAuNTA3LDIwLjUwNyAwIDAgMCAxNi42MTksOC42MDUgaCAwLjA2MiBhIDIwLjUxLDIwLjUxIDAgMCAwIDE2LjY3NywtOC42MjUgMi4wNDgsMi4wNDggMCAwIDAgMC4zNDUsLTEuNTI2IHoiCiAgICAgICAgICAgICAgICAgICAgICAgaWQ9IlBmYWRfMTM2NzMiIC8+CiAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbC1vcGFjaXR5OjEiCiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTI5MS4zNzcsLTE1OS4yMTkpIgogICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iUGZhZCAxMzY3NCIKICAgICAgICAgICAgICAgICAgICAgICBkPSJtIDQ5NS42OSwxODIuMjU0IGEgOS41ODgsOS41ODggMCAwIDAgLTIuMjg4LC0zLjI2OSA5LjMyMyw5LjMyMyAwIDAgMCAtMi41NTMsLTEuNjYzIGMgMC4wMzYsLTAuMDI2IDAuMDcxLC0wLjA1MyAwLjEwNSwtMC4wOCBhIDkuMjM1LDkuMjM1IDAgMCAwIDIuODIsLTMuNjg2IDExLjQxNywxMS40MTcgMCAwIDAgMC45MzYsLTQuNTE4IDkuNDkyLDkuNDkyIDAgMCAwIC0yLjgsLTcuMTU1IDEwLjIsMTAuMiAwIDAgMCAtNy4zMywtMi42NjEgaCAtMTMuOTQ4IGEgMi4wNjQsMi4wNjQgMCAwIDAgLTIuMDM4LDIuMDM4IHYgMTIuNTc1IGEgMiwyIDAgMCAwIDAuNTYsMS40IDIuMDM1LDIuMDM1IDAgMCAwIDEuNTI3LDAuNjM2IDIuMDg4LDIuMDg4IDAgMCAwIDEuNDcyLC0wLjYgMS45NzEsMS45NzEgMCAwIDAgMC42MTcsLTEuNDMxIHYgLTMuMjg3IGggMC4wMDYgViAxNjMuMyBoIDExLjU1MSBhIDYuMzc5LDYuMzc5IDAgMCAxIDQuNjM4LDEuNTUyIDUuNTE0LDUuNTE0IDAgMCAxIDEuNTcsNC4xNCA2LjgxOCw2LjgxOCAwIDAgMSAtMS43NjEsNS4xMzUgNi4zNDIsNi4zNDIgMCAwIDEgLTQuNDQ3LDEuNzQ4IEggNDg0LjEgbCAtNC44ODEsLTAuMDMyIGEgMi4wMjgsMi4wMjggMCAwIDAgLTIuMDM1LDIuMDYgMi4wNDgsMi4wNDggMCAwIDAgMC42LDEuNDU0IDEuOTg0LDEuOTg0IDAgMCAwIDEuNDMxLDAuNjEgbCA0Ljg4MSwwLjAzMSBoIDAuNTg2IGEgMTAuNjMyLDEwLjYzMiAwIDAgMSA0LjAzLDAuNzM0IDUuNjQxLDUuNjQxIDAgMCAxIDIuNjU2LDIuMTQyIDYuODU1LDYuODU1IDAgMCAxIDAuOTc0LDMuODUxIGMgMCwyLjM4MyAtMC42ODIsNC4wNDcgLTIuMDg1LDUuMDg3IGEgOS4xNzYsOS4xNzYgMCAwIDEgLTUuNTc1LDEuNjQ0IGggLTExLjkxIHYgLTEwLjU0NCBoIC0wLjAwNiB2IC0wLjg2MyBhIDIsMiAwIDAgMCAtMC41NiwtMS40IDIuMDM1LDIuMDM1IDAgMCAwIC0xLjUyNywtMC42MzYgMi4wODgsMi4wODggMCAwIDAgLTEuNDcyLDAuNiAxLjk3MSwxLjk3MSAwIDAgMCAtMC42MTcsMS40MzEgdiAxMy40MzYgYSAyLjA2MywyLjA2MyAwIDAgMCAyLjAzOCwyLjAzOSBoIDE0LjMxNCBhIDE0Ljc1MSwxNC43NTEgMCAwIDAgNC4zOTMsLTAuNjQzIDEwLjY0LDEwLjY0IDAgMCAwIDMuNzE2LC0yIDkuNDg4LDkuNDg4IDAgMCAwIDIuNTUyLC0zLjQxMyAxMS41MjIsMTEuNTIyIDAgMCAwIDAuOTE4LC00Ljc0NSAxMS4yMzEsMTEuMjMxIDAgMCAwIC0wLjgzMSwtNC40NjQgeiIKICAgICAgICAgICAgICAgICAgICAgICBpZD0iUGZhZF8xMzY3NCIgLz4KICAgICAgICAgICAgICAgICAgICA8ZwogICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmaWxsLW9wYWNpdHk6MSIKICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1My4wNTEpIgogICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iR3J1cHBlIDI1MzU5IgogICAgICAgICAgICAgICAgICAgICAgIGlkPSJHcnVwcGVfMjUzNTkiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmaWxsLW9wYWNpdHk6MSIKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zNDQuNDI5LC0xNTkuMjE5KSIKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iUGZhZCAxMzY3NSIKICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Im0gMzU5LjA4MSwxNzUuODcgYSAyLjAwNiwyLjAwNiAwIDAgMSAtMS41MjQsLTAuNjUyIDIuMDc1LDIuMDc1IDAgMCAxIC0wLjU1OSwtMS40MzMgdiAtMTAuNSBoIC0xMC40ODUgYSAyLjA5MywyLjA5MyAwIDAgMSAtMS40MywtMC41NTggMS45NywxLjk3IDAgMCAxIC0wLjY1NCwtMS40NzcgMS45NDEsMS45NDEgMCAwIDEgMC42NTYsLTEuNDc1IDIuMDY3LDIuMDY3IDAgMCAxIDEuNDI4LC0wLjU1NyBoIDI1LjE0IGEgMi4wODYsMi4wODYgMCAwIDEgMS40MzEsMC41NiAxLjk0MSwxLjk0MSAwIDAgMSAwLjY1MiwxLjQ3MiAxLjkxOSwxLjkxOSAwIDAgMSAtMC42ODgsMS41MzIgMi4xNTUsMi4xNTUgMCAwIDEgLTEuMzk1LDAuNSBoIC0xMC40ODYgdiAxMC41IGEgMi4xMDksMi4xMDkgMCAwIDEgLTIuMDg2LDIuMDg1IHoiCiAgICAgICAgICAgICAgICAgICAgICAgICBpZD0iUGZhZF8xMzY3NSIgLz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPGcKICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbC1vcGFjaXR5OjEiCiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjUuNjIxLDIwLjc5NSkiCiAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJHcnVwcGUgMjUzNjAiCiAgICAgICAgICAgICAgICAgICAgICAgaWQ9IkdydXBwZV8yNTM2MCI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZpbGwtb3BhY2l0eToxIgogICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTM1Ni45OTgsLTE4MC4wMTQpIgogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJQZmFkIDEzNjc2IgogICAgICAgICAgICAgICAgICAgICAgICAgZD0ibSAzNTkuMDgyLDE5Ny41MjYgYSAyLjAxLDIuMDEgMCAwIDEgLTEuNTI2LC0wLjY1MiAyLjA3MywyLjA3MyAwIDAgMSAtMC41NTcsLTEuNDMzIFYgMTgyLjEgYSAyLjEwOSwyLjEwOSAwIDAgMSAyLjA4NiwtMi4wODUgMiwyIDAgMCAxIDEuNTI0LDAuNjUyIDIuMDc1LDIuMDc1IDAgMCAxIDAuNTU5LDEuNDMzIHYgMTMuMzQyIGEgMi4xMDksMi4xMDkgMCAwIDEgLTIuMDg1LDIuMDg1IHoiCiAgICAgICAgICAgICAgICAgICAgICAgICBpZD0iUGZhZF8xMzY3NiIgLz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbC1vcGFjaXR5OjEiCiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTI5MS4zNzgsLTE1OS4yMTkpIgogICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iUGZhZCAxMzY3NyIKICAgICAgICAgICAgICAgICAgICAgICBkPSJtIDMxMy4wODMsMTU5LjggYSAyLDIgMCAwIDAgLTEuNDQ0LC0wLjU3OSAyMC40NTksMjAuNDU5IDAgMCAwIC0xOS4wNTEsMjcuMzc5IDIuMDQ2Mjc5OCwyLjA0NjI3OTggMCAxIDAgMy44NSwtMS4zODggMTYuMzY1LDE2LjM2NSAwIDAgMSAxNS4yMzcsLTIxLjkgMi4wNDcsMi4wNDcgMCAwIDAgMS40MDgsLTMuNTE1IHogbSAtMC43LDAuNzE2IHoiCiAgICAgICAgICAgICAgICAgICAgICAgaWQ9IlBmYWRfMTM2NzciIC8+CiAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbC1vcGFjaXR5OjEiCiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTI5MS4zNzYsLTE1OS4yMTkpIgogICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iUGZhZCAxMzY3OCIKICAgICAgICAgICAgICAgICAgICAgICBkPSJtIDUyOC40MzEsMTYxLjI1MiBhIDIuMDQ5LDIuMDQ5IDAgMCAwIDIuMDI4LDIuMDYyIDE2LjM2NSwxNi4zNjUgMCAwIDEgMTUuMjM3LDIxLjkgMi4wNDcsMi4wNDcgMCAwIDAgMi4xLDIuNzM0IDIuMDUxLDIuMDUxIDAgMCAwIDEuNzQ4LC0xLjM0NiAyMC40NTksMjAuNDU5IDAgMCAwIC0xOS4wNTEsLTI3LjM4NCAyLDIgMCAwIDAgLTEuNDQ0LDAuNTc5IDIuMDMyLDIuMDMyIDAgMCAwIC0wLjYxOCwxLjQ1NSB6IG0gMS4zMTgsLTAuNzM3IHoiCiAgICAgICAgICAgICAgICAgICAgICAgaWQ9IlBmYWRfMTM2NzgiIC8+CiAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0nRm9vdGVyTGlua3MnPgpbJSBJRihEYXRhLkZvb3RlckxpbmtzKSAlXQogICAgWyUgRk9SRUFDSCBMaW5rIElOIERhdGEuRm9vdGVyTGlua3MgJV0KICAgICAgICAgICAgPGEgaHJlZj0iWyUgTGluay5UYXJnZXQgfCBodG1sICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9Im9vbzEwZyI+WyUgTGluay5EZXNjcmlwdGlvbiB8IFRyYW5zbGF0ZSB8IGh0bWwgJV08L2E+CiAgICBbJSBFTkQgJV0KWyUgRU5EICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0nb29vJz4KICAgICAgICAgICAgPHAgY2xhc3M9J29vbzEwZyc+cG93ZXJlZCBieSA8YSBocmVmPSJodHRwczovL290b2JvLmRlIiB0YXJnZXQ9Il9ibGFuayI+Um90aGVyIE9TUzwvYT48L3A+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+CgpbJSBJbnNlcnRUZW1wbGF0ZSgiQ3VzdG9tZXJGb290ZXJKUy50dCIpICVdCgo8L2JvZHk+CjwvaHRtbD4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicITSMConfigItemOverviewSmall.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0Ij4KICAgIDxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0U2Nyb2xsQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb250ZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQogICAgICAgIDxkaXYgaWQ9IkVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1RhYmxlIikgJV0KICAgICAgICA8dGFibGUgY2xhc3M9IlRhYmxlU21hbGwgTm9DZWxsc3BhY2luZyI+CiAgICAgICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlSGVhZGVyIikgJV0KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0xpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpIHwgdXJpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VyRGVwbFNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVXNlckF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1bJSBEYXRhLkNvbHVtbk5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1bJSBEYXRhLkNvbHVtbk5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIER5bmFtaWNGaWVsZCBMYXN0IFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+ClslIFJlbmRlckJsb2NrRW5kKCJUYWJsZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlQm9keSIpICVdCiAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgICAgIDx0ciBpZD0iQ29uZmlnSXRlbUlEX1slIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdSb3ciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbURhdGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJEZXBsU2lnbmFsIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV10aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VyRGVwbFN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj4iWyUgVHJhbnNsYXRlKERhdGEuQ3VyRGVwbFN0YXRlKSB8IGh0bWwgJV0iPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFNpZ25hbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckluY2lTaWduYWwiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXSB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj4iWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0iPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VySW5jaVNpZ25hbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5IikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVXNlckZ1bGxuYW1lIHwgaHRtbCAlXSAoWyUgRGF0YS5Vc2VyTG9naW4gfCBodG1sICVdKSI+WyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCB0cnVuY2F0ZSg1MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1DcmVhdGVkQnkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ29sdW1uIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgaHRtbCAlXSI+WyUgRGF0YS5HZW5lcmljVmFsdWUgfCB0cnVuY2F0ZSgxMDApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRyYW5zbGF0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5HZW5lcmljVmFsdWUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRyYW5zbGF0YWJsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UaW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXSI+WyUgRGF0YS5HZW5lcmljVmFsdWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UaW1lIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1EYXRhIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZExpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZExpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgPC90Ym9keT4KWyUgUmVuZGVyQmxvY2tFbmQoIlRhYmxlQm9keSIpICVdCiAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb250ZW50IikgJV0KICAgIDwvZGl2Pgo8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50Q29sdW1uRmlsdGVyRm9ybSIpICVdCjxmb3JtIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbHVtbiBGaWx0ZXJzIEZvcm0iKSB8IGh0bWwgJV0iIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSB8IGh0bWwgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iQ29sdW1uRmlsdGVyQXR0cmlidXRlcyIgaWQ9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm1FbGVtZW50IikgJV0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlslIERhdGEuRWxlbWVudE5hbWUgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5FbGVtZW50VmFsdWUgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm1FbGVtZW50IikgJV0KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtIikgJV0K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicITSMConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iIGFjY2Vzc2tleT0iWyUgRGF0YS5BY2Nlc3NLZXkgfCBodG1sICVdIj48YnV0dG9uPjxzcGFuPiBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj48L2E+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hCb3giKSAlXQogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KICAgICAgICA8ZGl2IGlkPSdvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXInPgpbJSBJRiBFbnYoIlN1YmFjdGlvbiIpID09ICdTZWFyY2gnICVdCiAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMiBvb29sIFNlbGVjdGVkIj4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdOiAgIlslIERhdGEuRnVsbHRleHQgfCBodG1sICVdIgogICAgICAgICAgICA8L3A+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGaWx0ZXJIZWFkZXIiKSAlXQogICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5DbGFzc0EgfCBodG1sICVdIG9vbzEyZyBvb29sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249WyUgRW52KCJTdWJhY3Rpb24iKSAlXTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07U29ydEJ5PVslIERhdGEuU29ydEJ5IHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdWyUgRGF0YS5DdXN0b21lcklEcyAlXTtGdWxsdGV4dD1bJSBEYXRhLkZ1bGx0ZXh0IHwgdXJpICVdIj4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSAoWyUgRGF0YS5Db3VudCB8IGh0bWwgJV0pCiAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZpbHRlckhlYWRlciIpICVdClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGaWx0ZXJEZWxldGUiKSAlXQogICAgICAgICAgICA8ZGl2IGlkPSJvb29JVFNNQ29uZmlnSXRlbUZpbHRlckRlbGV0ZSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtEZWxldGVGaWx0ZXJzPURlbGV0ZUZpbHRlcnMiPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUmVzZXQgb3ZlcnZpZXciKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0ib29vZm8gb29vZm8tZGVsZXRlX291dGwiPjwvaT4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXJEZWxldGUiKSAlXQojICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyBvb29sIj5bJSBEYXRhLklUU01Db25maWdJdGVtQ291bnQgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiQ29uZmlnSXRlbXMiKSB8IGh0bWwgJV08L3A+CiMgICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIG9vb2wiPlslIFRyYW5zbGF0ZSgiU29ydCIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMmcgb29vciI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIiKSB8IGh0bWwgJV08L3A+CiMgICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIG9vb3IiPlslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICBbJSBEYXRhLklUU01Db25maWdJdGVtTGlzdEhUTUwgJV0KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Modules/PublicITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkgbm9uZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CgogICAgIyBjbGVhciBhbnkgYWN0aXZlIGxvZ2luIHRvIGVuZm9yY2Ugc2VjdXJpdHkKICAgIGRlbGV0ZSAkU2VsZi0+e1VzZXJJRH07CgogICAgJFNlbGYtPntDYWNoZVR5cGV9ID0gJ0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e0NhY2hlVFRMfSAgPSA2MCAqIDYwICogMjQgKiAyMDsKCiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgZGVidWcKICAgICRTZWxmLT57RGVidWd9ID0gMDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CgogICAgaWYgKCAkU29ydEJ5IGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgIH0KCiAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBvcmRlcmluZyB0byBiZSB1c2VkLgogICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ1VwJzsKCiAgICAjIFNldCB0aGUgc29ydCBvcmRlciBmcm9tIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIG9yIHRha2UgdGhlIGRlZmF1bHQuCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKCiAgICAjIGdldCB0aGUgY29sdW1uIGZpbHRlcnMgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiAgICAgICAgcXcoRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlIENsYXNzKQogICAgICAgICkKICAgIHsKICAgICAgICAjIGdldCBjb2x1bW4gZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgfHwgJyc7CgogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgfQoKICAgICMgZ2V0IGFsbCBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhZGVmaW5lZCAkRmlsdGVyVmFsdWU7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJEZpbHRlclZhbHVlIGVxICcnOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgJENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSB7CiAgICAgICAgICAgIEVxdWFscyA9PiAkRmlsdGVyVmFsdWUsCiAgICAgICAgfTsKICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRGaWx0ZXJWYWx1ZTsKICAgIH0KCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQ7CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBuZSAnQUpBWEZpbHRlclVwZGF0ZScgKSB7CiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPlB1YmxpY0hlYWRlcigKICAgICAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICAgICApOwogICAgfQoKICAgICMgc29ydCBvbiBkZWZhdWx0IGJ5IHVzaW5nIGJvdGggKFByaW9yaXR5LCBBZ2UpIGVsc2UgdXNlIG9ubHkgb25lIHNvcnQgYXJndW1lbnQKICAgIG15ICVTb3J0OwoKICAgICMgZ2V0IGlmIHNlYXJjaCByZXN1bHQgc2hvdWxkIGJlIHByZS1zb3J0ZWQgYnkgcHJpb3JpdHkKICAgIG15ICRQcmVTb3J0QnlQcmlvcml0eSA9ICRDb25maWctPnsnUHJlU29ydDo6QnlQcmlvcml0eSd9OwogICAgaWYgKCAhJFByZVNvcnRCeVByaW9yaXR5ICkgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+ICRTb3J0QnksCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+IFsgJ1ByaW9yaXR5JywgJFNvcnRCeSBdLAogICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0Rvd24nLCAgICAgJE9yZGVyQnkgXSwKICAgICAgICApOwogICAgfQoKICAgICMgbXkgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZGVmaW5lIHBvc2l0aW9uIG9mIHRoZSBmaWx0ZXIgaW4gdGhlIGZyb250ZW5kCiAgICBteSAkUHJpb0NvdW50ZXIgPSAxMDAwOwoKICAgICMgdG8gc3RvcmUgdGhlIE5hdkJhciBmaWx0ZXJzCiAgICBteSAlRmlsdGVyczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICBteSBAVmlld2FibGVEZXBsU3RhdGVJRHM7CiAgICBteSBAVmlld2FibGVDbGFzc0lEczsKCiAgICAjIGZldGNoIGZpbHRlcnMgZnJvbSBjb25maWcKICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpOwoKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnKSApIHsKICAgICAgICBQRVJNQ09ORjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0NvdW50ZXIgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJZGVudGlmaWVyICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkQ29uZmlnQ291bnRlciApOwogICAgICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+eyRDb25maWdJZGVudGlmaWVyfTsKICAgICAgICAgICAgbmV4dCBQRVJNQ09ORiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcpOwoKICAgICAgICAgICAgIyBzZXQgYXMgc2VsZWN0ZWQgZmlsdGVyIGlmIG5vdCBwcmVzZW50CiAgICAgICAgICAgICRGaWx0ZXIgfHw9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgICAgIG15ICVERlNlYXJjaFBhcmFtczsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICAgICAkREZTZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJUZpbHRlclNlYXJjaCA9ICgKICAgICAgICAgICAgICAgIENsYXNzZXMgICAgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfSwKICAgICAgICAgICAgICAgICVERlNlYXJjaFBhcmFtcywKICAgICAgICAgICAgICAgICVTb3J0LAogICAgICAgICAgICAgICAgTGltaXQgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0gLy8gJzEwMDAnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhcHBseSBmaWx0ZXIgcmVzdHJpY3Rpb25zIHRvIHNlYXJjaCBmb3IKICAgICAgICAgICAgaWYgKCAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSApIHsKICAgICAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkQ2xhc3NMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9IH0gZXEgJF8gfSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgQFZpZXdhYmxlQ2xhc3NJRHMgPSAoICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJTZWFyY2h7Q2xhc3Nlc30gPSBbICRDbGFzc0xpc3QtPnsgJEdldENvbHVtbkZpbHRlcntDbGFzc30gfSBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZUNsYXNzSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSApOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJTZWFyY2h7Q2xhc3Nlc30gPSBbICRDbGFzc0xpc3QtPnsgJEdldENvbHVtbkZpbHRlcntDbGFzc30gfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQFZpZXdhYmxlQ2xhc3NJRHMgPSBzb3J0IGtleXMgJENsYXNzTGlzdC0+JSo7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJERlcGxTdGF0ZUxpc3QtPnsgJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9IH0gZXEgJF8gfSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgQFZpZXdhYmxlRGVwbFN0YXRlSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgJEZpbHRlclNlYXJjaHtEZXBsU3RhdGVzfSA9IFsgJERlcGxTdGF0ZUxpc3QtPnsgJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9IH0gXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBAVmlld2FibGVEZXBsU3RhdGVJRHMgPSAoICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSApOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJTZWFyY2h7RGVwbFN0YXRlc30gPSBbICREZXBsU3RhdGVMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSB9IF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBAVmlld2FibGVEZXBsU3RhdGVJRHMgPSBzb3J0IGtleXMgJERlcGxTdGF0ZUxpc3QtPiUqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgICAgICBpZiAoIEBWaWV3YWJsZUNsYXNzSURzICYmIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyApIHsKICAgICAgICAgICAgICAgICRDb3VudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgICVGaWx0ZXJTZWFyY2gsCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdDT1VOVCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRmlsdGVyc3skQ29uZmlnQ291bnRlcn0gPSB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAkUHJpb0NvdW50ZXIsCiAgICAgICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICAgICAgU2VhcmNoID0+IFwlRmlsdGVyU2VhcmNoLAogICAgICAgICAgICB9OwogICAgICAgICAgICAkUHJpb0NvdW50ZXIrKzsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBvbmx5IG9uZSBmaWx0ZXIgZXhpc3RzCiAgICBpZiAoIHNjYWxhciBrZXlzICVGaWx0ZXJzID09IDEgKSB7CgogICAgICAgICMgZ2V0IHRoZSBuYW1lIG9mIHRoZSBvbmx5IGZpbHRlcgogICAgICAgIG15ICgkRmlsdGVyTmFtZSkgPSBrZXlzICVGaWx0ZXJzOwoKICAgICAgICAjIGFjdGl2YXRlIHRoaXMgZmlsdGVyCiAgICAgICAgJEZpbHRlciA9ICRGaWx0ZXJOYW1lOwogICAgfQoKICAgICMgY2hlY2sgaWYgZmlsdGVyIGlzIHZhbGlkCiAgICBpZiAoICRGaWx0ZXIgJiYgIWV4aXN0cyAkRmlsdGVyc3skRmlsdGVyfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0ludmFsaWQgRmlsdGVyOiAlcyEnLCAkRmlsdGVyICksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgaGVhZGVyIGZpbHRlcgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUZpbHRlcnMgKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWx0ZXJIZWFkZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRLZXl9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJEtleSwKICAgICAgICAgICAgICAgIENsYXNzQSA9PiAkS2V5IGVxICRGaWx0ZXIgPyAnU2VsZWN0ZWQnIDogJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgZmlsdGVyIGRlbGV0ZSBpZiBuZWVkZWQKICAgIGlmICglR2V0Q29sdW1uRmlsdGVyKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckRlbGV0ZScsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVmlldyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFZpZXcgPSAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICRWaWV3IHx8PSAnU21hbGwnOwoKICAgICMgQ2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUuCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljT3ZlcnZpZXcnKTsKICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKCiAgICAgICAgIyBUcnkgdG8gZmluZCBmYWxsYmFjaywgdGFrZSBmaXJzdCBjb25maWd1cmVkIHZpZXcgbW9kZS4KICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAkVmlldyA9ICRLZXk7CiAgICAgICAgICAgIGxhc3QgS0VZOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBwYWdlIHNob3duIGNvdW50CiAgICBteSAkUGFnZVNob3duID0gJENvbmZpZy0+e1BhZ2VTaG93bn07CiAgICBteSAlUGFnZU5hdjsKCiAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgbXkgJExpbWl0ID0gMTAwMDsKCiAgICBteSAkRWxlbWVudENoYW5nZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRWxlbWVudENoYW5nZWQnICkgfHwgJyc7CiAgICBteSAkSGVhZGVyQ29sdW1uICAgPSAkRWxlbWVudENoYW5nZWQ7CiAgICAkSGVhZGVyQ29sdW1uID1+IHN7XEEgQ29sdW1uRmlsdGVyIH17fW1zeGc7CgogICAgIyBnZXQgZGF0YSAodmlld2FibGUgY29uZmlnIGl0ZW1zLi4uKQogICAgIyBzZWFyY2ggYWxsIGNvbmZpZyBpdGVtcwogICAgbXkgQFZpZXdhYmxlQ29uZmlnSXRlbXM7CiAgICBteSBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zOwoKICAgICMgYnVpbGQgbGlua3MKICAgIG15ICRDb2x1bW5GaWx0ZXJMaW5rID0gJyc7CiAgICBDT0xVTU5OQU1FOgogICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCBrZXlzICVHZXRDb2x1bW5GaWx0ZXIgKSB7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkQ29sdW1uTmFtZTsKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgIWRlZmluZWQgJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX07CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9IGVxICcnOwogICAgICAgICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgICAgIC49ICc7JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJ0NvbHVtbkZpbHRlcicgLiAkQ29sdW1uTmFtZSApCiAgICAgICAgICAgIC4gJz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gKTsKICAgIH0KCiAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAuICc7JzsKCiAgICBteSAkTGlua1NvcnQgPSAnVmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnO0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAuICc7JzsKCiAgICBteSAkTGlua0ZpbHRlciA9ICdTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7JzsKCiAgICBteSAkTGFzdENvbHVtbkZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdMYXN0Q29sdW1uRmlsdGVyJyApIHx8ICcnOwoKICAgIGlmICggISRMYXN0Q29sdW1uRmlsdGVyICYmICRDb2x1bW5GaWx0ZXJMaW5rICkgewoKICAgICAgICAjIGlzIHBsYW5uZWQgdG8gaGF2ZSBhIGxpbmsgdG8gZ28gYmFjayBoZXJlCiAgICAgICAgJExhc3RDb2x1bW5GaWx0ZXIgPSAxOwogICAgfQoKICAgIGlmICggQFZpZXdhYmxlRGVwbFN0YXRlSURzICYmIEBWaWV3YWJsZUNsYXNzSURzICkgewoKICAgICAgICAjIGdldCBjb25maWcgaXRlbSB2YWx1ZXMKICAgICAgICBpZiAoCiAgICAgICAgICAgICFJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoJEhlYWRlckNvbHVtbikKICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ09ubHlWYWx1ZXNPbkNvbmZpZ0l0ZW0nKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyfS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgIExpbWl0ICA9PiAkTGltaXQsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRTdGFydEhpdCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICAgICAgICAgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgICAgICAgICAgTGltaXQgICAgID0+IDEwMDAwLAogICAgICAgICAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgICAgICAgICAgQWxsSGl0cyAgID0+IHNjYWxhciBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgTGluayAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgICAgIElEUHJlZml4ICA9PiAnUHVibGljSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgQFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJ9LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgIExpbWl0ICA9PiAkU3RhcnRIaXQgKyAkUGFnZVNob3duIC0gMSwKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICB9CgogICAgIyBUT0RPIE1heWJlIHRoZXJlIGlzIGEgbW9yZSBlbGVnYW50IHdheSB0byBkbyB0aGlzPwogICAgJFNlbGYtPntGaWx0ZXJ9ICA9ICRGaWx0ZXI7CiAgICAkU2VsZi0+e0ZpbHRlcnN9ID0gXCVGaWx0ZXJzOwoKICAgIG15ICRDb3VudFRvdGFsID0gMDsKICAgIG15ICVOYXZCYXJGaWx0ZXI7CiAgICBmb3IgbXkgJEZpbHRlckNvbHVtbiAoIHNvcnQga2V5cyAlRmlsdGVycyApIHsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGlmIChAVmlld2FibGVEZXBsU3RhdGVJRHMpIHsKICAgICAgICAgICAgJENvdW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyQ29sdW1ufS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKSB8fCAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRmlsdGVyQ29sdW1uIGVxICRGaWx0ZXIgKSB7CiAgICAgICAgICAgICRDb3VudFRvdGFsID0gJENvdW50OwogICAgICAgIH0KCiAgICAgICAgJE5hdkJhckZpbHRlcnsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0tPntQcmlvfSB9ID0gewogICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlckNvbHVtbiwKICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0gfSwKICAgICAgICB9OwogICAgfQoKICAgICMgc2hvdyBjb25maWcgaXRlbXMKICAgIG15ICRDb25maWdJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgIEZpbHRlcnMgICAgICAgICAgICAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgPT4gXEBWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBHZXRDb2x1bW5GaWx0ZXIgICAgICAgPT4gXCVHZXRDb2x1bW5GaWx0ZXIsCiAgICAgICAgTGFzdENvbHVtbkZpbHRlciAgICAgID0+ICRMYXN0Q29sdW1uRmlsdGVyLAogICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAnUHVibGljSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFRvdGFsICAgICAgICAgICAgICAgICA9PiAkQ291bnRUb3RhbCwKICAgICAgICBSZXF1ZXN0ZWRVUkwgICAgICAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgICAgIFZpZXcgICAgICAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICBUaXRsZU5hbWUgICAgICAgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdPdmVydmlldzogSVRTTSBDb25maWdJdGVtJyksCiAgICAgICAgVGl0bGVWYWx1ZSAgICAgICAgICAgID0+ICRTZWxmLT57RmlsdGVyc317JEZpbHRlcn0tPntOYW1lfSwKICAgICAgICBFbnYgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgTGlua1BhZ2UgICAgICAgICAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICBMaW5rU29ydCAgICAgICAgICAgICAgPT4gJExpbmtTb3J0LAogICAgICAgIExpbmtGaWx0ZXIgICAgICAgICAgICA9PiAkTGlua0ZpbHRlciwKICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgID0+ICRTb3J0QnksCiAgICAgICAgRW5hYmxlQ29sdW1uRmlsdGVycyAgID0+IDEsCiAgICAgICAgQ29sdW1uRmlsdGVyRm9ybSAgICAgID0+IHsKICAgICAgICAgICAgRmlsdGVyID0+ICRGaWx0ZXIgfHwgJycsCiAgICAgICAgfSwKICAgICAgICBGcm9udGVuZCA9PiAnUHVibGljJywKCiAgICAgICAgIyBkbyBub3QgcHJpbnQgdGhlIHJlc3VsdCBlYXJsaWVyLCBidXQgcmV0dXJuIGNvbXBsZXRlIGNvbnRlbnQKICAgICAgICBPdXRwdXQgPT4gMSwKICAgICk7CgogICAgbXkgJVB1YmxpY0FjdGlvbnMgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpY0Zyb250ZW5kOjpNb2R1bGUnKSAvLyB7fSB9OwogICAgaWYgKCAkUHVibGljQWN0aW9uc3tQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaH0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEJveCcsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkSGVhZGVyVGl0bGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW0iKS0+e1RpdGxlfSB8fCAiQ29uZmlnSXRlbXMiOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgPT4gJEhlYWRlclRpdGxlLAogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUxpc3RIVE1MID0+ICRDb25maWdJdGVtTGlzdEhUTUwsCiAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgIH0sCiAgICApOwoKICAgICMjIGdldCBwYWdlIGZvb3RlcgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNGb290ZXIoKTsKICAgICMKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=</File>
        <File Location="Kernel/Modules/PublicITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwoKICAgICMgY2xlYXIgYW55IGFjdGl2ZSBsb2dpbiB0byBlbmZvcmNlIHNlY3VyaXR5CiAgICBkZWxldGUgJFNlbGYtPntVc2VySUR9OwoKICAgICRTZWxmLT57Q2FjaGVUeXBlfSA9ICdJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntDYWNoZVRUTH0gID0gNjAgKiA2MCAqIDI0ICogMjA7CgogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0sCiAgICApOwoKICAgICMgYnVpbGQgTmF2aWdhdGlvbkJhciAmIHRvIGdldCB0aGUgb3V0cHV0IGZhc3RlciEKICAgIG15ICRSZWZyZXNoID0gJyc7CiAgICBpZiAoICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfSApIHsKICAgICAgICAkUmVmcmVzaCA9IDYwICogJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9OwogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNIZWFkZXIoCiAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICk7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggZmlsdGVycyBmcm9tIGNvbmZpZwogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBwZXJtaXNzaW9uJyksCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlB1YmxpY0Zvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIGdldCBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdCBvciB1c2UgZmlyc3QgdmFsaWQgcGVybWlzc2lvbiBjb25kaXRpb24KICAgIG15ICRGaWx0ZXIgPQogICAgICAgICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQZXJtaXNzaW9uQ29uZGl0aW9uJyApIHx8CiAgICAgICAgJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fAogICAgICAgICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzLT4lKiApWzBdOwoKICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzLT57IHNwcmludGYoICIlMDJkIiwgJEZpbHRlciApIH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZykgKSB7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdGaWx0ZXIgaW52YWxpZCEnKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgIG15ICVQYWdlTmF2OwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlYXJjaEFjdGlvbicgKSB7CgogICAgICAgIG15ICRTb3J0QnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICAgICAgfHwgJ0FnZSc7CgogICAgICAgIGlmICggJFNvcnRCeSBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAkU29ydEJ5ID0gJ0NoYW5nZWQnOwogICAgICAgIH0KCiAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgb3JkZXJpbmcgdG8gYmUgdXNlZC4KICAgICAgICBteSAkRGVmYXVsdE9yZGVyQnkgPSAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICAgICAgfHwgJ1VwJzsKCiAgICAgICAgIyBTZXQgdGhlIHNvcnQgb3JkZXIgZnJvbSB0aGUgcmVxdWVzdCBwYXJhbWV0ZXJzLCBvciB0YWtlIHRoZSBkZWZhdWx0LgogICAgICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICAgICAjIHNvcnQgb24gZGVmYXVsdCBieSB1c2luZyBib3RoIChQcmlvcml0eSwgQWdlKSBlbHNlIHVzZSBvbmx5IG9uZSBzb3J0IGFyZ3VtZW50CiAgICAgICAgbXkgJVNvcnQ7CgogICAgICAgICMgZ2V0IGlmIHNlYXJjaCByZXN1bHQgc2hvdWxkIGJlIHByZS1zb3J0ZWQgYnkgcHJpb3JpdHkKICAgICAgICBteSAkUHJlU29ydEJ5UHJpb3JpdHkgPSAkQ29uZmlnLT57J1ByZVNvcnQ6OkJ5UHJpb3JpdHknfTsKICAgICAgICBpZiAoICEkUHJlU29ydEJ5UHJpb3JpdHkgKSB7CiAgICAgICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICAgICAgU29ydEJ5ICA9PiAkU29ydEJ5LAogICAgICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICAgICAgU29ydEJ5ICA9PiBbICdQcmlvcml0eScsICRTb3J0QnkgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRG93bicsICAgICAkT3JkZXJCeSBdLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFZpZXcgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmlldycgKSB8fCAnJzsKCiAgICAgICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICAgICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH07CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICAgICAkVmlldyB8fD0gJ1NtYWxsJzsKCiAgICAgICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1N1YmFjdGlvbn0gKQogICAgICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICk7CgogICAgICAgIG15ICRMaW5rU29ydCA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgICAgIC4gJztTdWJhY3Rpb249JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTdWJhY3Rpb259ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKTsKCiAgICAgICAgIyBnZXQgc2VhcmNoIHBhcmFtcyBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJUdldFBhcmFtOwogICAgICAgIFBBUkFNOgogICAgICAgIGZvciBteSAkU2VhcmNoUGFyYW0gKHF3KE51bWJlciBOYW1lKSkgewogICAgICAgICAgICBuZXh0IFBBUkFNIGlmICEkQ29uZmlnLT57ICRTZWFyY2hQYXJhbSB9OwoKICAgICAgICAgICAgIyBmZXRjaCBzaW5nbGUgdmFsdWUgcGFyYW1zCiAgICAgICAgICAgICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFNlYXJjaFBhcmFtICk7CgogICAgICAgICAgICAjIHN1cHJlc3MgZnV6enkgbG9naWMgb3BlcmF0b3JzCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e1N1cHByZXNzRnV6enlMb2dpY30gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSA9fiBzL1tcKiVfXS8vZzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkTGlua1BhZ2UgLj0gIjskU2VhcmNoUGFyYW09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gKTsKICAgICAgICAgICAgJExpbmtTb3J0IC49ICI7JFNlYXJjaFBhcmFtPSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ICk7CiAgICAgICAgfQoKICAgICAgICBteSBAQXJyYXlTZWFyY2hQYXJhbXM7CgogICAgICAgIGlmICggJENvbmZpZy0+e0NsYXNzfSApIHsKICAgICAgICAgICAgcHVzaCBAQXJyYXlTZWFyY2hQYXJhbXMsICdDbGFzc0lEcyc7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWctPntEZXBsb3ltZW50U3RhdGV9ICkgewogICAgICAgICAgICBwdXNoIEBBcnJheVNlYXJjaFBhcmFtcywgJ0RlcGxTdGF0ZUlEcyc7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWctPntJbmNpZGVudFN0YXRlfSApIHsKICAgICAgICAgICAgcHVzaCBAQXJyYXlTZWFyY2hQYXJhbXMsICdJbmNpU3RhdGVJRHMnOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRTZWFyY2hQYXJhbUFycmF5IChAQXJyYXlTZWFyY2hQYXJhbXMpIHsKCiAgICAgICAgICAgICMgZmV0Y2ggbXVsdGkgdmFsdWUgcGFyYW1zCiAgICAgICAgICAgIG15IEBBcnJheSA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICRTZWFyY2hQYXJhbUFycmF5ICk7CgogICAgICAgICAgICBpZiAoIGdyZXAgeyRffSBAQXJyYXkgKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtQXJyYXl9ID0gXEBBcnJheTsKICAgICAgICAgICAgICAgICRMaW5rUGFnZSAuPSBqb2luKCAnJywgbWFwIHsgIjskU2VhcmNoUGFyYW1BcnJheT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkXyApIH0gQEFycmF5ICk7CiAgICAgICAgICAgICAgICAkTGlua1NvcnQgLj0gam9pbiggJycsIG1hcCB7ICI7JFNlYXJjaFBhcmFtQXJyYXk9IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9IEBBcnJheSApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlU2VhcmNoQ29uZmlnOwogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPkAqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiBHZXRQYXJhbSB0byBzdG9yZSBpdCBsYXRlciBpbiB0aGUgc2VhcmNoCiAgICAgICAgICAgICAgICAjIHByb2ZpbGUKICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKSApIHsKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0gPSAoICVHZXRQYXJhbSwgJXskRHluYW1pY0ZpZWxkVmFsdWV9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHByb2ZpbGUKICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXIgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgICAgICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgc2VhcmNoIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRTZWFyY2hQYXJhbWV0ZXIgKSB7CgogICAgICAgICAgICAgICAgICAgICMgYXBwZW5kIHNlYXJjaCBwYXJhbXMgdG8gbGlua3MKICAgICAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfSApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gam9pbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwIHsgIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkXyApIH0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfS0+QCoKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtTb3J0IC49IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCB7ICI7U2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30tPkAqCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rU29ydCAuPSAiO1NlYXJjaF9EeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30gKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJExpbmtQYWdlIC49ICc7JzsKICAgICAgICAkTGlua1NvcnQgLj0gJzsnOwoKICAgICAgICAlU2VhcmNoQ29uZmlnID0gKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBtZXJnZSBmaWx0ZXJlZCBjbGFzc2VzIHdpdGggcGVybWlzc2lvbiBjb25kaXRpb24gY2xhc3NlcwogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17Q2xhc3NJRHN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZWFyY2hDbGFzc2VzOwogICAgICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCAkR2V0UGFyYW17Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJENsYXNzTGlzdC0+eyRDbGFzc0lEfSB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaENsYXNzZXMsICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tDbGFzc2VzfSA9IFxAU2VhcmNoQ2xhc3NlczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7Q2xhc3Nlc30gPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJFNlYXJjaENvbmZpZ3tDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlB1YmxpY0Zvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIG1lcmdlIGZpbHRlcmVkIGRlcGxveW1lbnQgc3RhdGVzIHdpdGggcGVybWlzc2lvbiBjb25kaXRpb24gZGVwbG95bWVudCBzdGF0ZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte0RlcGxTdGF0ZUlEc30gKSApIHsKICAgICAgICAgICAgbXkgQFNlYXJjaERlcGxTdGF0ZXM7CiAgICAgICAgICAgIGZvciBteSAkRGVwbFN0YXRlSUQgKCAkR2V0UGFyYW17RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfSApICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJERlcGxTdGF0ZUxpc3QtPnskRGVwbFN0YXRlSUR9IH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaERlcGxTdGF0ZXMsICREZXBsU3RhdGVMaXN0LT57JERlcGxTdGF0ZUlEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hEZXBsU3RhdGVzLCAkRGVwbFN0YXRlTGlzdC0+eyREZXBsU3RhdGVJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggIUBTZWFyY2hEZXBsU3RhdGVzICkgewogICAgICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPlB1YmxpY0hlYWRlcigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNFcnJvcigKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRm9vdGVyKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSBcQFNlYXJjaERlcGxTdGF0ZXM7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9OwogICAgICAgIH0KCiAgICAgICAgIyBtYXAgZmlsdGVyZWQgaW5jaWRlbnQgc3RhdGUgaWRzCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtJbmNpU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZWFyY2hJbmNpU3RhdGVzID0gbWFwIHsgJEluY2lTdGF0ZUxpc3QtPnskX30gfSAkR2V0UGFyYW17SW5jaVN0YXRlSURzfS0+QCo7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7SW5jaVN0YXRlc30gPSBcQFNlYXJjaEluY2lTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICAkU2VhcmNoQ29uZmlne051bWJlcn0gPSAkR2V0UGFyYW17TnVtYmVyfSA/ICRHZXRQYXJhbXtOdW1iZXJ9IDogdW5kZWY7CiAgICAgICAgJFNlYXJjaENvbmZpZ3tOYW1lfSAgID0gJEdldFBhcmFte05hbWV9ICAgPyAkR2V0UGFyYW17TmFtZX0gICA6IHVuZGVmOwoKICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVGaWx0ZXJzID0gKAogICAgICAgICAgICAkRmlsdGVyID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgUHJpbyAgID0+IDEwMDAsCiAgICAgICAgICAgICAgICBTZWFyY2ggPT4gXCVTZWFyY2hDb25maWcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJVNlYXJjaENvbmZpZyApIHsKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPlB1YmxpY0hlYWRlcigKICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdTZWFyY2ggcGFyYW1zIGludmFsaWQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUuCgogICAgICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNPdmVydmlldycpOwogICAgICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKCiAgICAgICAgICAgICMgVHJ5IHRvIGZpbmQgZmFsbGJhY2ssIHRha2UgZmlyc3QgY29uZmlndXJlZCB2aWV3IG1vZGUuCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAgICAgJFZpZXcgPSAkS2V5OwogICAgICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICAgICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwoKICAgICAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgICAgIG15ICRMaW1pdCA9IDFfMDAwOwoKICAgICAgICAjIGdldCBkYXRhICh2aWV3YWJsZSBjb25maWcgaXRlbXMuLi4pCiAgICAgICAgIyBzZWFyY2ggYWxsIGNvbmZpZyBpdGVtcwogICAgICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgJVNlYXJjaENvbmZpZywKICAgICAgICAgICAgTGltaXQgID0+ICRMaW1pdCwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcyA9PSAxICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtc1swXSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkVG90YWwgPSBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtczsKCiAgICAgICAgbXkgJFN0YXJ0SGl0ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDE7CgogICAgICAgIG15IEBWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICVTZWFyY2hDb25maWcsCiAgICAgICAgICAgIExpbWl0ICA9PiAkU3RhcnRIaXQgKyAkUGFnZVNob3duIC0gMSwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgICAgICBMaW1pdCAgICAgPT4gMTAwMDAsCiAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgICAgICBBbGxIaXRzICAgPT4gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgTGluayAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgSURQcmVmaXggID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPIE1heWJlIHRoZXJlIGlzIGEgbW9yZSBlbGVnYW50IHdheSB0byBkbyB0aGlzPwogICAgICAgICRTZWxmLT57RmlsdGVyfSAgPSAkRmlsdGVyOwogICAgICAgICRTZWxmLT57RmlsdGVyc30gPSBcJUZpbHRlcnM7CgogICAgICAgICMgc2hvdyBjb25maWcgaXRlbXMKICAgICAgICBteSAkQ29uZmlnSXRlbUxpc3RIVE1MID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdygKICAgICAgICAgICAgRmlsdGVyICAgICAgICAgICAgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgICAgICAgICA9PiBcQFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgTGlua1BhZ2UgICAgICAgICAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgTGlua1NvcnQgICAgICAgICAgICAgID0+ICRMaW5rU29ydCwKICAgICAgICAgICAgRW5hYmxlQ29sdW1uRmlsdGVyICAgID0+IDAsCiAgICAgICAgICAgIFZpZXcgICAgICAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICAgICAgVG90YWwgICAgICAgICAgICAgICAgID0+ICRUb3RhbCwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgRW52ICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLAogICAgICAgICAgICBGcm9udGVuZCAgICAgICAgICAgICAgPT4gJ1B1YmxpYycsCgogICAgICAgICAgICAjIGRvIG5vdCBwcmludCB0aGUgcmVzdWx0IGVhcmxpZXIsIGJ1dCByZXR1cm4gY29tcGxldGUgY29udGVudAogICAgICAgICAgICBPdXRwdXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQm94JywKICAgICAgICApOwoKICAgICAgICBteSAlUHVibGljQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljRnJvbnRlbmQ6Ok1vZHVsZScpIC8vIHt9IH07CiAgICAgICAgaWYgKCAkUHVibGljQWN0aW9uc3tQdWJsaWNJVFNNQ29uZmlnSXRlbX0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdMaW5rJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hSZXN1bHQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtTGlzdEhUTUwgPT4gJENvbmZpZ0l0ZW1MaXN0SFRNTCwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewoKICAgICAgICAjIHN0b3JlIGRyb3Bkb3duIHJlc3RyaWN0aW9ucyBmcm9tIHBlcm1pc3Npb24gY29uZGl0aW9uCiAgICAgICAgbXkgJVNlYXJjaGFibGVQYXJhbXMgPSAoCiAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICApOwoKICAgICAgICAjIHNldCBzZWFyY2hhYmxlIHBhcmFtcwogICAgICAgIG15ICVDbGFzc0xvb2t1cCA9IHJldmVyc2UgJENsYXNzTGlzdC0+JSo7CiAgICAgICAgJFNlYXJjaGFibGVQYXJhbXN7Q2xhc3N9ID0gewogICAgICAgICAgICBtYXAgewogICAgICAgICAgICAgICAgJENsYXNzTG9va3VweyRffQogICAgICAgICAgICAgICAgICAgID8gKCAkQ2xhc3NMb29rdXB7JF99ID0+ICRfICkKICAgICAgICAgICAgICAgICAgICA6ICgpCiAgICAgICAgICAgIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCoKICAgICAgICB9OwoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfSApICkgewogICAgICAgICAgICBteSAlRGVwbFN0YXRlTG9va3VwID0gcmV2ZXJzZSAkRGVwbFN0YXRlTGlzdC0+JSo7CiAgICAgICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0gPSB7CiAgICAgICAgICAgICAgICBtYXAgewogICAgICAgICAgICAgICAgICAgICREZXBsU3RhdGVMb29rdXB7JF99CiAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkRGVwbFN0YXRlTG9va3VweyRffSA9PiAkXyApCiAgICAgICAgICAgICAgICAgICAgICAgIDogKCkKICAgICAgICAgICAgICAgIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCoKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0gPSAkRGVwbFN0YXRlTGlzdDsKICAgICAgICB9CgogICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncyA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpOwoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+UHVibGljSGVhZGVyKAogICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlB1YmxpY0Vycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgIG15ICVQdWJsaWNBY3Rpb25zID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWNGcm9udGVuZDo6TW9kdWxlJykgLy8ge30gfTsKICAgICAgICBpZiAoICRQdWJsaWNBY3Rpb25ze1B1YmxpY0lUU01Db25maWdJdGVtfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0xpbmsnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEZvcm0nLAogICAgICAgICk7CgogICAgICAgIG15ICVEZWZhdWx0czsKICAgICAgICBpZiAoICRDb25maWctPntEZWZhdWx0c30gKSB7CiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJENvbmZpZy0+e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRDb25maWctPntEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eQ29uZmlnSXRlbShDcmVhdGV8Q2hhbmdlKS8gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQEl0ZW1zID0gc3BsaXQgLzsvLCAkQ29uZmlnLT57RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtIChASXRlbXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJEl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICREZWZhdWx0c3skS2V5fSA9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkRGVmYXVsdHN7JEtleX0gPSAkQ29uZmlnLT57RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgcGVybWlzc2lvbiBjb25kaXRpb24KICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbkRhdGEgPSBtYXAgeyBpbnQoJF8pID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncy0+eyRffS0+e05hbWV9IH0ga2V5cyAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MtPiUqOwogICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICA9PiBcJVBlcm1pc3Npb25Db25kaXRpb25EYXRhLAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAnUGVybWlzc2lvbkNvbmRpdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRGaWx0ZXIgfHwgJycsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQZXJtaXNzaW9uQ29uZGl0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBQZXJtaXNzaW9uQ29uZGl0aW9uU3RyZyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvblN0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPkAqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkUG9zc2libGVWYWx1ZXNGaWx0ZXI7CgogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJc0FDTFJlZHVjaWJsZSkgewoKICAgICAgICAgICAgICAgICMgZ2V0IFBvc3NpYmxlVmFsdWVzCiAgICAgICAgICAgICAgICBteSAkUG9zc2libGVWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+UG9zc2libGVWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgZmllbGQgaGFzIFBvc3NpYmxlVmFsdWVzIHByb3BlcnR5IGluIGl0cyBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQb3NzaWJsZVZhbHVlcykgKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGhpc3RvcmljYWwgdmFsdWVzIGZyb20gZGF0YWJhc2UKICAgICAgICAgICAgICAgICAgICBteSAkSGlzdG9yaWNhbFZhbHVlcyA9ICRCYWNrZW5kT2JqZWN0LT5IaXN0b3JpY2FsVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRGF0YSA9ICRQb3NzaWJsZVZhbHVlczsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgaGlzdG9yaWMgdmFsdWVzIHRvIGN1cnJlbnQgdmFsdWVzIChpZiB0aGV5IGRvbid0IGV4aXN0IGFueW1vcmUpCiAgICAgICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkSGlzdG9yaWNhbFZhbHVlcykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEhpc3RvcmljYWxWYWx1ZXN9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJERhdGEtPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YS0+eyRLZXl9ID0gJEhpc3RvcmljYWxWYWx1ZXMtPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JERhdGF9OwogICAgICAgICAgICAgICAgICAgIEBBY2xEYXRheyBrZXlzICVBY2xEYXRhIH0gPSBrZXlzICVBY2xEYXRhOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgICAgICAgICAgICAgIG15ICRBQ0wgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbCgKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IEZpbGVyIGtleSA9PiBrZXkgYmFjayB0byBrZXkgPT4gdmFsdWUgdXNpbmcgbWFwCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzRmlsdGVyfSA9IG1hcCB7ICRfID0+ICREYXRhLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgICAgPT4ge30sCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZy0+e0RlZmF1bHRzfXtEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntGaWVsZH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWctPntOdW1iZXJ9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ051bWJlcicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWctPntOYW1lfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0NsYXNzfSApIHsKICAgICAgICAgICAgbXkgJENsYXNzU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWFyY2hhYmxlUGFyYW1ze0NsYXNzfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2xhc3NJRHMnLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICREZWZhdWx0c3tDbGFzc0lEc30sCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDbGFzcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDbGFzc1N0cmcgPT4gJENsYXNzU3RyZywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWctPntEZXBsb3ltZW50U3RhdGV9ICkgewoKICAgICAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSB3YW50ZWQgZGVwbG95bWVudCBzdGF0ZXMKICAgICAgICAgICAgbXkgJEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICREZWZhdWx0c3tEZXBsb3ltZW50U3RhdGVJRHN9LAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyA9PiAkQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWctPntJbmNpZGVudFN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGluY2lkZW50IHN0YXRlcwogICAgICAgICAgICBteSAkQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWFyY2hhYmxlUGFyYW1ze0luY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJERlZmF1bHRze0luY2lkZW50U3RhdGVJRHN9LAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyA9PiAkQ3VySW5jaVN0YXRlT3B0aW9uU3RyZywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPlB1YmxpY0hlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24hJyksCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlB1YmxpY0Zvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICBteSAkSGVhZGVyVGl0bGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2giKS0+e1RpdGxlfSB8fCAiQ29uZmlnSXRlbSBTZWFyY2giOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgPT4gJEhlYWRlclRpdGxlLAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBwYWdlIGZvb3RlcgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/PublicITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdjUuMjQ7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKCiAgICAjIGNsZWFyIGFueSBhY3RpdmUgbG9naW4gdG8gZW5mb3JjZSBzZWN1cml0eQogICAgZGVsZXRlICRTZWxmLT57VXNlcklEfTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJExvZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGdldCBJRHMKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJFZlcnNpb25JRCAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICk7CgogICAgIyBjaGVjayBwYXJhbQogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCB8fCAhJFZlcnNpb25JRCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDb25maWdJdGVtSUQgYW5kIFZlcnNpb25JRCBhcmUgbmVlZGVkIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGZldGNoIGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwoKICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ICE9ICRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnVmVyc2lvbklEIGRvZXMgbm90IGJlbG9uZyB0byBDb25maWdJdGVtSUQhJywKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlB1YmxpY1Blcm1pc3Npb24oCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICk7CiAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5QdWJsaWNOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICBteSAkSFRNTFV0aWxzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIEdldCB0aGUgRmllbGQgY29udGVudC4KICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn07CgogICAgICAgICMgIyBCdWlsZCBiYXNlIFVSTCBmb3IgaW4tbGluZSBpbWFnZXMuCiAgICAgICAgIyBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgIyBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICMgICAgICRTZXNzaW9uSUQgPSAnOycgLiAkU2VsZi0+e1Nlc3Npb25OYW1lfSAuICc9JyAuICRTZWxmLT57U2Vzc2lvbklEfTsKICAgICAgICAjICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgIyAgICAgICAgIChBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtDb25maWdJdGVtSUQ9XGQrO0ZpbGVuYW1lPVx3KykKICAgICAgICAjICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgICMgfQoKICAgICAgICAjIGZldGNoIGNvbmZpZyBpdGVtIGF0dGFjaG1lbnQgbGlzdCBmb3IgaGFuZGxpbmcgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIGF0dGFjaG1lbnQgZGF0YSBhbmQgc3RvcmUgaW4gaGFzaCBmb3IgUmljaFRleHREb2N1bWVudFNlcnZlCiAgICAgICAgbXkgJUF0dGFjaG1lbnRzOwogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfXtDb250ZW50SUR9ID0gJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CiAgICAgICAgfQoKICAgICAgICAjIG5lZWRlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBwYXJhbXMgZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnaW5saW5lJywKICAgICAgICApOwoKICAgICAgICBteSAkVVJMCiAgICAgICAgICAgID0gIkFjdGlvbj1QdWJsaWNJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9O1ZlcnNpb25JRD0kQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH07RmlsZW5hbWU9IjsKCiAgICAgICAgIyByZWZvcm1hdCByaWNoIHRleHQgZG9jdW1lbnQgdG8gaGF2ZSBjb3JyZWN0IGNoYXJzZXQgYW5kIGxpbmtzIHRvCiAgICAgICAgIyBpbmxpbmUgZG9jdW1lbnRzCiAgICAgICAgJURhdGEgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50U2VydmUoCiAgICAgICAgICAgIERhdGEgICAgICAgICAgICAgICA9PiBcJURhdGEsCiAgICAgICAgICAgIFVSTCAgICAgICAgICAgICAgICA9PiAkVVJMLAogICAgICAgICAgICBBdHRhY2htZW50cyAgICAgICAgPT4gXCVBdHRhY2htZW50cywKICAgICAgICAgICAgTG9hZEV4dGVybmFsSW1hZ2VzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICREYXRhe0NvbnRlbnR9OwoKICAgICAgICAjIHJlbW92ZSBhY3RpdmUgaHRtbCBjb250ZW50IChzY3JpcHRzLCBhcHBsZXRzLCBldGMuLi4pCiAgICAgICAgbXkgJVNhZmVDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+U2FmZXR5KAogICAgICAgICAgICBTdHJpbmcgICAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgTm9BcHBsZXQgICAgID0+IDEsCiAgICAgICAgICAgIE5vT2JqZWN0ICAgICA9PiAxLAogICAgICAgICAgICBOb0VtYmVkICAgICAgPT4gMSwKICAgICAgICAgICAgTm9JbnRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vRXh0U3JjTG9hZCA9PiAwLAogICAgICAgICAgICBOb0phdmFTY3JpcHQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHRha2UgdGhlIHNhZmUgY29udGVudCBpZiBuZWNjZXNzYXJ5CiAgICAgICAgaWYgKCAkU2FmZUNvbnRlbnR7UmVwbGFjZX0gKSB7CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2FmZUNvbnRlbnR7U3RyaW5nfTsKICAgICAgICB9CgogICAgICAgICMgZGV0ZWN0IGFsbCBwbGFpbiB0ZXh0IGxpbmtzIGFuZCBwdXQgdGhlbSBpbnRvIGFuIEhUTUwgPGE+IHRhZwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRmllbGRDb250ZW50LAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRhcmdldD0iX2JsYW5rIiBhdHRyaWJ1dGUgdG8gYWxsIEhUTUwgPGE+IHRhZ3MKICAgICAgICAjIHRoZSBMaW5rUXVvdGUgZnVuY3Rpb24gbmVlZHMgdG8gYmUgY2FsbGVkIGFnYWluCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIFRhcmdldEFkZCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBlc2NhcGUgc2luZ2xlIHF1b3RlcwogICAgICAgICRGaWVsZENvbnRlbnQgPX4gcy8nLyYjMzk7L2c7CgogICAgICAgICMgUmV0dXJuIGNvbXBsZXRlIEhUTUwgYXMgYW4gYXR0YWNobWVudC4KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgRG93bmxvYWRBdHRhY2htZW50IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgbXkgJEZpbGVuYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwoKICAgICAgICAjIGNoZWNrIHBhcmFtCiAgICAgICAgaWYgKCAhJEZpbGVuYW1lICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnRmlsZW5hbWUgaXMgbmVlZGVkIScsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbiBhdHRhY2htZW50CiAgICAgICAgbXkgJERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJERhdGEpICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpLiIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREYXRhKSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoICREYXRhLT4lKiApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIE5vIChrbm93bikgc3ViYWN0aW9uCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQgU3ViYWN0aW9uLicpLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/PublicITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKCiAgICAjIGNsZWFyIGFueSBhY3RpdmUgbG9naW4gdG8gZW5mb3JjZSBzZWN1cml0eQogICAgZGVsZXRlICRTZWxmLT57VXNlcklEfTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJFZlcnNpb25JRCAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UHVibGljRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UHVibGljUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UHVibGljTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVpvb20nKSAvLyB7fTsKCiAgICBpZiAoICEkQ29uZmlnLT57VmVyc2lvbnNFbmFibGVkfSApIHsKICAgICAgICAkVmVyc2lvbklEID0gdW5kZWY7CiAgICB9CgogICAgIyBnZXQgY29udGVudAogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVmVyc2lvbklEICAgICA9PiAkVmVyc2lvbklELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgYWRkaXRpb25hbCBzYW5pdHkgY2hlY2sgLSBQdWJsaWNQZXJtaXNzaW9uIHNob3VsZCBoYW5kbGUgdGhpcyBjYXNlIHVzdWFsbHkKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UHVibGljRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb25maWdJdGVtIG5vdCBmb3VuZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIGNvbG9yIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbG95bWVudFN0YXRlc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIHNldCBkZXBsb3ltZW50IHN0eWxlIGNvbG9ycwogICAgbXkgJFN0eWxlQ2xhc3NlcyA9ICcnOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJFByZWZlcmVuY2Vze0NvbG9yfTsKICAgICAgICBteSAoJENvbG9yKSA9ICRQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY292ZXJ0ZWQgZGVwbG95bWVudCBzdGF0ZSBhcyB2YWx1ZQogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICdDb2xvcicgLiAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvdmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gbGMoJENvbG9yKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkNvbG9yJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+UHVibGljSGVhZGVyKCBWYWx1ZSA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0gKTsKCiAgICBpZiAoICRDb25maWctPntHZW5lcmFsSW5mb30gKSB7CiAgICAgICAgaWYgKCAkQ29uZmlnLT57R2VuZXJhbEluZm99e051bWJlcn0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRnVsbFN1YicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIENsYXNzICA9PiAkQ29uZmlnLT57R2VuZXJhbEluZm99e0NsYXNzfSA/ICRDb25maWdJdGVtLT57Q2xhc3N9IDogJ0NvbmZpZ0l0ZW0nCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRDb25maWctPntHZW5lcmFsSW5mb317Q2xhc3N9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzU3ViJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICRDb25maWdJdGVtLT57Q2xhc3N9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRDb25maWdJdGVtLT57RGVwbFN0YXRlQ29sb3JDbGFzc30gPSAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSB9OwogICAgICAgICRDb25maWdJdGVtLT57SW5jaVN0YXRlQ29sb3JDbGFzc30gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0gfTsKCiAgICAgICAgSU5GTzoKICAgICAgICBmb3IgbXkgJEluZm8gKHF3L0RlcGxveW1lbnRTdGF0ZSBJbmNpZGVudFN0YXRlIENyZWF0ZWRUaW1lIExhc3RDaGFuZ2VkVGltZS8pIHsKICAgICAgICAgICAgbmV4dCBJTkZPIGlmICEkQ29uZmlnLT57R2VuZXJhbEluZm99eyRJbmZvfTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkSW5mbywKICAgICAgICAgICAgICAgIERhdGEgPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICVQdWJsaWNBY3Rpb25zID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWNGcm9udGVuZDo6TW9kdWxlJykgLy8ge30gfTsKICAgIGlmICggJFB1YmxpY0FjdGlvbnN7UHVibGljSVRTTUNvbmZpZ0l0ZW19ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0xpbmsnLAogICAgICAgICk7CiAgICB9CgogICAgIyBpZiBhIHZlcnNpb24gYWxyZWFkeSBleGlzdHMgKFRPRE86IFdoZW4gZG9lcyBpdCBub3Q/KQogICAgaWYgKCAkQ29uZmlnSXRlbS0+e05hbWV9ICkgewogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFBhZ2VzOwogICAgICAgIG15ICRQYWdlU2hvd247CiAgICAgICAgbXkgJFBhZ2VSZXF1ZXN0ZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUGFnZScgKTsKICAgICAgICBQQUdFOgogICAgICAgIGZvciBteSAkUGFnZSAoICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17UGFnZXN9LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyAkUGFnZS0+e0ludGVyZmFjZXN9OwogICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRfIGVxICdQdWJsaWMnIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CgogICAgICAgICAgICBwdXNoIEBQYWdlcywgJFBhZ2U7CgogICAgICAgICAgICBpZiAoICRQYWdlUmVxdWVzdGVkICYmICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VSZXF1ZXN0ZWQgKSB7CiAgICAgICAgICAgICAgICAkUGFnZVNob3duID0gJFBhZ2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRQYWdlU2hvd24gLy89IEBQYWdlcyA/ICRQYWdlc1swXSA6IHVuZGVmOwoKICAgICAgICBpZiAoIHNjYWxhciBAUGFnZXMgPT0gMSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdlTmFtZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBQYWdlTmFtZSA9PiAkUGFnZXNbMF17TmFtZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZm9yIG15ICRQYWdlIChAUGFnZXMpIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2VMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgICAgID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZCAgICAgPT4gJFBhZ2UtPntOYW1lfSBlcSAkUGFnZVNob3duLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChAUGFnZXMpIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntEeW5hbWljRmllbGRIVE1MfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkJyktPlBhZ2VSZW5kZXIoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICAgICAgICAgIFBhZ2VSZWYgICAgPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2ZXJzaW9uIGxpc3QKICAgICAgICBpZiAoICRDb25maWctPntWZXJzaW9uc0VuYWJsZWR9ICYmICRDb25maWctPntWZXJzaW9uc1NlbGVjdGFibGV9ICkgewoKICAgICAgICAgICAgIyBnZXQgdmVyc2lvbiBsaXN0CiAgICAgICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRCYXNlTGluayA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tOycKICAgICAgICAgICAgICAgICAgICAuICJDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9O1BhZ2U9WyUgRGF0YS5OYW1lIHwgdXJpICVdOyIsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlU2hvd24gPyAkUGFnZVNob3duLT57TmFtZX0gOiAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAVmVyc2lvblNlbGVjdGlvbkRhdGEgPSBtYXAgewogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICggJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kXy0+e1ZlcnNpb25JRH0iICksCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gKAogICAgICAgICAgICAgICAgICAgICAgICAiJF8tPntOYW1lfSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICggJF8tPntWZXJzaW9uU3RyaW5nfSB8fCAkXy0+e1ZlcnNpb25JRH0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiICgkXy0+e0NyZWF0ZVRpbWV9KSIKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICRWZXJzaW9uTGlzdC0+QCo7CgogICAgICAgICAgICBteSAkVmVyc2lvblNlbGVjdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxAVmVyc2lvblNlbGVjdGlvbkRhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZlcnNpb25TZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgQWxpZ25Ecm9wZG93blJpZ2h0JywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbklEID8gJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kVmVyc2lvbklEIiA6IHVuZGVmLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1ZlcnNpb25zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlcnNpb25TZWxlY3Rpb24gPT4gJFZlcnNpb25TZWxlY3Rpb24sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRzJywKICAgICAgICApOwoKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbWV0YWRhdGEgb2YgdGhlIGN1cnJlbnQgYXR0YWNobWVudAogICAgICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBEb3dubG9hZEF0dGFjaG1lbnQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICAgICAgbXkgJEZpbGVuYW1lICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRBdHRhY2htZW50RGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAleyRBdHRhY2htZW50RGF0YX0sCiAgICAgICAgICAgIFR5cGUgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICRPdXRwdXQsCiAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0lUU01Db25maWdJdGVtWm9vbScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICBDdXJJbmNpU2lnbmFsID0+ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFNpZ25hbCA9PiAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSB9LAogICAgICAgICAgICAgICAgU3R5bGVDbGFzc2VzICA9PiAkU3R5bGVDbGFzc2VzLAogICAgICAgICAgICB9LAogICAgICAgICksCiAgICAgICAgJExheW91dE9iamVjdC0+UHVibGljRm9vdGVyOwp9CgoxOwo=</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/Core.Items.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi5vb29DYXRlZ29yeSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDZweDsKICAgIHBhZGRpbmctcmlnaHQ6IDZweDsKICAgIHdpZHRoOiBhdXRvOwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgcGFkZGluZy10b3A6IDFweDsKICAgIHBhZGRpbmctYm90dG9tOiAxcHg7CiAgICBtaW4taGVpZ2h0OiAxNXB4OwogICAgbWluLXdpZHRoOiA1cHg7CiAgICBtYXgtd2lkdGg6IDgwcHg7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwp9Cgojb29vQ3VzdG9tZXJOb3RpZmljYXRpb25zID4gLk1lc3NhZ2VCb3ggewogICAgd2lkdGg6IGNhbGMoIDEwMCUgLSAxNnB4ICk7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmY2NjOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5V2Fybik7CiAgICBtYXJnaW4tdG9wOiAycHg7CiAgICBtYXJnaW4tYm90dG9tOiAycHg7CiAgICBwYWRkaW5nOiA0cHggOHB4IDRweCA4cHg7Cn0KCiNvb29DdXN0b21lck5vdGlmaWNhdGlvbnMgPiAuTWVzc2FnZUJveC5TdWNjZXNzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjNGNkZmE7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xOb3RpZnlPSyk7Cn0KCgojb29vQ3VzdG9tZXJOb3RpZmljYXRpb25zID4gLk1lc3NhZ2VCb3guRXJyb3IgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5YmNiMjsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbE5vdGlmeUVycik7Cn0KCi5Jbml0aWFscyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xCR0xpZ2h0KTsKICAgIHRleHQtaW5kZW50OiAwcHg7CiAgICBjb2xvcjogIzdmODA5ZDsKICAgIGNvbG9yOiB2YXIoLS1jb2xUZXh0TGlnaHQpOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjM1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi8qIFJvdGhlciBPU1MgLyBJVFNNUHVibGljQ01EQiAqLwoKI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlcjpoYXMoKy5vb29JVFNNQ29uZmlnSXRlbVNlYXJjaCkgewogICAgcGFkZGluZy1ib3R0b206IDZweDsKfQoKLkJhY2tsaW5rID4gc3BhbiB7CiAgICBtYXJnaW4tbGVmdDo0cHg7Cn0KCi5CYWNrbGlua0JveCAuQmFja2xpbmsgPiAub29vZm8tYXJyb3dfbCB7CiAgICBmb250LXNpemU6MTNweDsKfQoKLkJhY2tsaW5rID4gLm9vb2ZvLWFycm93X2wgewogICAgZm9udC1zaXplOjEycHg7Cn0KCi5CYWNrbGlua0JveCB7CiAgICBwYWRkaW5nLXRvcDogMThweDsKICAgIHBhZGRpbmctYm90dG9tOiAxMnB4OwogICAgZm9udC1zaXplOiAxNnB4Owp9Ci8qIEVPIElUU01QdWJsaWNDTURCICovCg==</File>
        <File Location="doc/en/ITSMPublicCMDB.pdf" Permission="644" Encode="Base64">JVBERi0xLjUKJeTw7fgKNCAwIG9iago8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCA4MjgvSGVpZ2h0IDI1My9Db2xvclNwYWNlL0RldmljZUdyYXkvQml0c1BlckNvbXBvbmVudAo4L0RlY29kZVBhcm1zPDwvQml0c1BlckNvbXBvbmVudCA4L0NvbG9ycyAxL0NvbHVtbnMgODI4L1ByZWRpY3RvciAyPj4vRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aAoyNDQzPj4Kc3RyZWFtCnja7d2LddpYAgZgUkGYCqKtIGwFZisIqWCYCsJUsGwFw1QwuIJlKli5gpUrGKhgTQVZJ465AoORhB7X6PvOmXMSGzsaSf/VfWswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgF5LktEwSR7/kC3WNf3K8TSp/LOr5cN1nufZ5PxnsodsnTV5EE9XJh2s19mDW/+yUzke34S/bcf1XLflz5f89P34Gq/qMP1Y8JPb1WrV1FHkr8wmS9NMBKpdzcnk0+FlS+q4bef/vOzn70dXeLbTmxIf3i4WjZQfk38ffGGTLlNJKP/wPvZw+HVRw69+eH/hL/jH9V3P0X/LfX47XzRwFNmRZ99muVyLQwnT+YejX//XvIb201+X/oY6jiK2ouo/ZX/iblL/o+fr8S/fzqXn0uTEkp1fF7JTX+vzfHakp/BlnJ+uev+yrOEfWH+48Bf8PZOdRsKz+nTyW7/P9bud7SGYfzn9zc2ojhP4okVatrYyHshOI+F57Si205V0vH72lq88FDaTeq7V7LeLojN5kJ06y7J8bf2PV77559Sj5xWnuo/vBoOHbL2q69wlk+GJ7+z+/bv0VL3iKsccQnZuT7csRsPkoGS7ndZ8HMl08PhUTz40WnZeZX1t+bK+u02ztMUh5q919kq8yey83gGfjKd7rdGmuutHyXj8saH27lVG58XQdpND2LJTJTvfPrr42E7b78jg+OD3mZwcK2rSgzHLu2X7pYzsFHiS5GfONDtOnEynTdcSrzE6d/O0g6OQnSJhyIWn8Xv5cLBPeM5FZzNNOzkM2Sn0IMnNfnvXeFV+NnsvPMXbOp3dubJTKDtJtrudPzffIk2WN8Jz2t4swPtpZ32RslOsARNqba2cqNk8/+jR23aq9Tm4nXU3BiY7xbIT5l23M8titMq3eq5wInv19uAfMdTXZKfEfbmbFLhJ2q/U17OO6yrkas9dP5Blp2B2Qm/Bu3aOcLjKNXqucUphNfk1ix3XZWWnYHbC7Kl3bR1jfpb1FS4DqdYQ/C2eZmBfsxOuQbzZyVfbtqO14DyeknWosXU+5aKv2QlRiDc7e+H5cyI5e31s3VdjZSfi7OwNoOtr21sCHUH3iewUvCcXXzrITr5DVnfB3mMngqJEdsr2s22HbR5nrr/Agyf32IlhroXslB3fabf8zzWOPXjCYyeKAS/ZKZadUOS13L2Tq7X1/cGTK0eiuFtlp9gdGW7hzy2vTgwzH/s+JzRcg00ykJ03k50wnP1Ty7WF3K4kP/V7Zk4oReIYKZadQtkJN3D7rY5wy/R7PnWoNkcyvU92Sq59a//+DVWVfo+PhqkgkWziIDtFshM+3UWRF/bi73WlLXTXR7JP7dee1gfCXqkFLkSur6uLIiYMy/a60vY1rp6C3LDF39b9rDyfH+ocLsJodic17bDurs89baHJGcu+W8/lb+/2AXuuAZztstnb9bibDp5dAXeVbxEr3dyJZpzrqULQv62PfywtO1NmJJNpfmOJjob2w3h6jxs84SS8i+aYksd6QJr28GJMHgvxg1esTcf7VenR/hZ6tW/lXlBob/V4asGuq9PcpHgfRSc18PKqko2zPi8f/Rpbc4cX1df4ouO+2TsHlp/HfHWOR6fDVc/qK+U3mKCTq3PcZr7s6tB2w4KyIztvMTuPd+60o0fPbl5Duwvv4rw679yq8Xl4f+4TXb0DtJPNEuIS+hpl5+31FXzXzayYMC7Y2xtH8RG3vV3CYwqPCkuk2RmPs2zdw6sxHI8O3+w6PXin8bF36HbRVJWdKOtsT9O1ejhu8L0g287OPEaGo/F4f8S0i+mg6mwxFh/Pc3R7F57nOkCB7QeG01n++dPBCjSV/Vx2Ilm9kxt169kahOH/fvxhkxQq+PPvkmq/1qaPOsbxnb6ufQuXolihMVqG+dTtD1AaG41xTo411wWLsfy+6q2XfObkxDinT3aKBiG3r3rryzfNBY2x/JCdwg+R0NnVdqsjLLru8Rzi+Na+yU7xCthu6XPbe4Na+7ZXdH1eyc5by064ei2fLGuu9x6+sVRcZad4dsLyzZar3LtJqn3e6yOchU0iO28tO62/J/6HsJdcr5cbx7u3oeyUuXqtNldDlS2Wmn4nQqsvkh4T2SmRnY6mxoTNsHs9/X43FSSWcXzZqZSdVmcw7bLT83dd7x77kcwfk51K2Wm1r3j3z/b7HSK7eVSxFCHtZOfbuph0cVH/6nQ6yi78FW81O8/vCux1L9v3e2Dx7UREs4dtK9l5auxetL/Z0wucNuO6ntaVpuV2tRRgtPrWwXc/fuh5dgbD6fAhjWUJQivZee4gueDiP28lUNvASqXshA0NWm60D0fjQbYaEJU2srN76V/lOZShe7KuZmKl7OjwouXshP02KzZ2c1OY62poVMrO7n/EduK0nZ1q4UmysGizy+yE8f2+v62dtrIThuMrhSe/6qy2jTaqZCeM7/e8s5jWsrO3WW3p2y6/2rm+o6yQnTAVtG+bO9BZdnJ9u+XDk2vr1NnOqJCd0FPQ+4EWWsvOXq2tXGPhaTis7hpblezkNg31Bhhay06+yfJYbE+KVnnyr5iu9+VRpbOz7Phl1/Q0O3tdZY8337xYwb33iul6W+gls9NMowvZKdtseXz0zM7fscl8f2v1Wju3SmVn/0g8dmg1O4fhGdzNX79nh7PZ++aiUyI7yWRy0+CBIDulwzO4W5yeoTWaHb7Oo+Y7NmTn9rXGV5KMDl9o1fNFNHSQnf02w1PtZ7lKj5b00xefnNUbnQIvSDzBbGbaz85guLp58bVtmmb5l+CMRqPJy5fe1P969qrZER26yM7BIGkuGtngIRsMR0ffFfWtdjep/YatmB3RoaPsHPY6F9PEoVXLTjRLFokpOy2NlQ/nX0r+xP20iYWCVbJTdFiKfthtttjafnHjxccI7tewQ2thtzMPHY60QNqc3jidF624bReLpu7X7GOpj29X87W7hb061NNMs82k1R0UiqWnweQcGW56xSZd2SyAl2aTWjdvKlpzm/58rp2zWDV6UMP56OZceB8LlPU6yzxxiOuJN5l8Oh2c5coNC6fjMx4fKfvvszQVHDjf8BiOH/97+nM6yB5SpwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDL/B9n0iy4KZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NNYXNrIDQgMCBSL1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDgyOC9IZWlnaHQgMjUzL0JpdHNQZXJDb21wb25lbnQKOC9EZWNvZGVQYXJtczw8L0JpdHNQZXJDb21wb25lbnQgOC9Db2xvcnMgMy9Db2x1bW5zIDgyOC9QcmVkaWN0b3IgMTU+Pi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoCjE4NDg+PgpzdHJlYW0KeNrt3Gtu2zoQgNG48JK6/xVkT6qBAEZao7FEkeLM8Bz0133gOpRIfqJyfdu27QMAgNh+GQIAANEGAIBoAwAQbQAAiDYAAEQbAIBoAwBAtAEAINoAAEQbAACiDQBAtAEAINoAABBtAACiDQAA0QYAgGgDABBtAACINgAARBsAgGgDAEC0AQCINgAARBsAAKINAEC0AQAg2gAAEG0AAKINAADRBgAg2gAAEG0AAIg2AADRBgCAaAMAQLQBAIg2AABEGwAAog0AQLQBACDaAABEGwAAog0AANEGACDaAAAQbQAAiDYAANEGAIBoAwAQbQAAiDYAAEQbAIBoAwBAtAEAINoAAEQbAACiDQAA0QYAINoAABBtAACiDQAA0QYAgGgDABBtAACINgAARBsAgGgDAEC0AQCINgAARBsAAKINAEC0AQAg2gAAEG0AAKINAADRBgCAaAMAEG0AAIg2AADRBgCAaAMAQLQBABRzNwSF3W6/f/4Htu1zzR88rKpXBNPHzW8Zp8P9sG2bUVh5wa034fMWmyUYc8cUsJ7zAydtqy+1j3+30jzPXmzAcxYvniANq5mhK8/vtKWf1TLFSg0lbzxz4eTWYADrcdJmhTUmQOhJ7dzIAPLFSVvWRyjjAHgew64h2jDxUvI0CboNO4how2RDeoJuM4yINubNsWKJoHjAYmg1cwog2lBsum34JxedwDWrmW5LmQS+XHeFXJMC4y6EsWWRBWfQrd6w0Jl0HTcIg5mLr/yoOSHNQyCF52Ll4Kd5kff96qKNlMVm7gGpK2TP6qcz+oav8UzE77QVKTa/DgVU6g+aN4KGMXTMKdq4qNjkGqDbODmGuk20MXbOyDXAakmvDcKoijY8jAJY33Kkm24TbfSfKlY0AEZsGbpNtNFtknglCugMdJtoI0GxGS4AdLBow3wDoPI+snMrcdgm2mifGIoNgIDbE6LNlFBsAAxhTxFtmF0AlNpZHLaJNkwGAJwIINpMKgDotMU4XxBt7JoGig0AEG0A5H6y5TyHbaKNDhPAMRsAQboN0YYpBEACDttEGwC0JIIn276Mp2jD8woAINo88QB4suWqrcd1EW0AcKwMPNmyrLshyPWsA1ByaXKQA285aQv3EImdDFa7mfevjSadBU20ARYyuHoKPFrt64/JmIJzh+m8HhUH7Lo0/6xWLhZVl6DmW92ODqINJDWEvtWvyTVzELweBcBTE8ZZtAGAkgDRlotf+ACsbBZPEG0AVE5D6QaiLQrn/4C16226GXBEGwAkoNsQbQDQ6OIXBbqNZfmeNmjZKrzOZoX7fP+t/voF1KM/pDmIaAN2PdnbM3Crv3Zbl/+iboP/8XoUGjcV72hwq5/3CK/nH5cARFvu5RJXDRa5mY/WmwmIaAOAmXnk1A1E2/yHSIMA0HHBdNiGaAMAD7og2gBAt8Xj5FK0AcCobtMZiDY84gAAog0ASMXbatHmjgfAyjmftz2iDXMGABBtAMB4zjtFGwCc5R0Fog0PKwBAFHdDIOmgr9djj6Q3dpkfBOxNNThpc/fD2ND5yPn2qswPYlHFMIo2Os+Nx18xYShZbBlzR5xhb7I3BeT1qGca4ECxPf6uyYu9iSmctAEhYsiHBBBtgCRSbG4bEG0AJTZgZQCINoDoebT/I/mNH3cLiDYgvf1BE2onVmyL3HUg2gASd5uDnMhcHfjOV34Ak7fkWSclR4PAiY5ig7mctAGdHY2bKXuzYgueazsvkOvCUpy0AUO67VAVXXnk1tCIyiBsTINoA7i62y5It7YgUGxhW82lQbQBTOu2QenWfH4jC86P4bi7y0VBtAFM7rbviXBmbz7ZGbIAEG2AbmsMr7ch1etASLEFv6kMAqINYNQW2yWnrnlJpwkUGwTkKz8Ae+1fH1ITuItAtAF23E8fDz0NbbweBSaEkf8VERcIjnLSBjaSOUMXZ/Rcx8iD4IANnpy0AZNDYeKpmxoQkZDIbds2owDvp8pLWNhURo+wJih/FVwXEG2AaNAEQDVejwKBPKOqb71pNUC0AYytt7aGU2mAaAOY33AAC/KVHwAAog0AANEGACDaAAAQbQAAiDYAANEGAIBoAwBAtAEAiDYAAEQbAIBoAwBAtAEAINoAAEQbAACiDQAA0QYAINoAABBtAACINgAA0QYAgGgDABBtAACINgAARBsAgGgDAEC0AQAg2gAARBsAAKINAEC0AQAg2gAAEG0AAKINAADRBgCAaAMAEG0AAIg2AABEGwCAaAMAQLQBAIg2AABEGwAAog0AQLQBACDaAAAQbQAAog0AANEGACDaAAAQbQAAiDYAANEGAIBoAwBAtAEAiDYAAEQbAACiDQBAtAEAINoAAEQbAACiDQAA0QYAINoAABBtAACINgAA0QYAgGgDABBtAACINgAARBsAgGgDAEC0AQAg2gAARBsAAKINAADRBgAg2gAAEG0AAKINAIBI/gCkqoRBCmVuZHN0cmVhbQplbmRvYmoKOCAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMxMT4+CnN0cmVhbQp42nWRz07DMAzG7zyFX6Ce7dhJI1U9IP4IbhO9IQ7t1nJhQjvx+jhpJyYBaq3UdfL9/DlwBgbyhyGJvwSHk2ePHu//rmfAnGOAL8+ajBoNTqCxvSQf8AL7P05xbtERIVdipJKwgMSM4odTwmixNLB7OhHcfbrI7QC7BwZRTG1iGBaQRBg1QsMc0ERgOL52RGZE0+zBREmJxthbRzwZMS3ENhFrIPYqybZFWg/q34bnyuCEwqaF0QZUMmgkYZttI4y5V1fkuaj1TPW7b4KXFlceec1d1SvzoYaIs+dpW5fKakJCLsNiZcwx/8iXhstIxiNxmFdUzi6Zsm9oZXU38QYhzcRR+4a7apLsyoxLm0k1o8iqbsYITXnDxbgOx61cWnaqGxEZr/9482uFq/b98Ote9zff8LuAUAplbmRzdHJlYW0KZW5kb2JqCjEyIDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzQ+PgpzdHJlYW0KeNpTKFQwVDAAQkMFcyMgMlBIzgXy3IE4nSAdyAUAh+oMRwplbmRzdHJlYW0KZW5kb2JqCjI4IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzc1Pj4Kc3RyZWFtCnja7VhNb9swDL3vV+gPWCNFfREIfBiwFditW27DDm0c77Ieusv+/ihLcRw5aILUvXRG4liRZZEU3uMTpZ4VKpAPqmDkC2r3JP/u5Po1u3/aqo9fUKHVZL1R214RG23YqSYEHYDVtvuxATAIEA1A8ACPewDCY/sR25/br+rzVoE2EOWXgpVfG736dnem889olzV745NZUA0G1mRitoj7Xdsgkt8MhnHXtVZ6cQ/I3DaWN6kP0FLu3O1HJ05DO5qQAHWcmdnf6DxNZpblY2tlakZtIo0RgDF9iSQ42qSlAnx0gN4OF/SUwgHs7FnvpzYYtI+xsiHzt40DmLUs8wtP19Y7bF0C0AB/5BlKZ8RZgAgGSBuKNRE6IYJDQSa4RAIP+NANfDYowyRVIYY0ZJNZIjlmGJA4nh56fzFIBKuNC5UHKyVWSrxIiQqvr6VEJWzGOI3OH2YXFrC3WVQLrqVXLgptKNAXTqDZZIG4ggK1zBkytdkeFhQ6Q0Ej4hjRROgyv5PQiagllX7AFELrinp72zYmSGwj7wdNjzluS7nfjKPLfcgVMn2e8XIesOKprz1d88D75rIjrLE5gf2C8mZZg/c1/BM+TXSJ2VCoi2WHCgn0tCjnTxyjqGVfW3m27g7/L+CfoPJtgO9RC4Rr4O8F+ESmwDthuSR9W7Z1Y9K/Ef/l5fQkvZh2iZlOkPQhDOUhTgdAlo08ML1qY4u5gGwbmhgphkchukJbjJdFY65WYyXW7cA9QdXbADcYzWGWsfuUsdm/FpcPPB5OkB8PKY6bmBGRlxO5i7ImVDm8Yuv9IN67Go09LlxusNWR7bGYaTjEkiuhz9gdcnR3RS0BOtgwm3M3bPaXqycIvI6WR5en9YSv6SkcHLiYjwcuLnokzVDbWBm1tm7hL2pKBK7wekqH5VSLMOoItqZFN263uu6oMukc+VBvXFk2jNSY2lmpsbZeQ41TzJ6nRrk/K00cnfqbZMt7pwNZ9SRzxePf3+q7uj+nTE57YWDjQ9AxHo7uLNW27j/8A0QP+XYKZW5kc3RyZWFtCmVuZG9iagozMSAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDExMD4+CnN0cmVhbQp42lMoVDBUMABCQwVzIyAyUEjOBfLcgTgdJ12ooGdsaWGqUA7k6ZqZmeqZG5so5CqYmFkguDkKwQqBCk4hCvpuhgqWepZmRmYKIWlgDebmehYWFgohKdE2BoYmxiBsFxvipeAaArchkAsAV8Qf1QplbmRzdHJlYW0KZW5kb2JqCjM0IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjY0Pj4Kc3RyZWFtCnjaZZDLbsQgDEX3/Qr/QBjbGAzSKIuqD7W7UbOrukhmkm4aVbPq79eQx6iqwIKLuRgfuAIB2iBQtolwnk09W3zu630HhyeC7HLkCN0EntQxBuDkJHvoLu9HxBAQh9GCEFUQ+9jKEWkISDghhQFJPJJlkdcrnCxsct82rNke6XM10VgMLWHdt4231GTmnhZtRsuM5xrM9vw4rOvUfnSv8NjBFZzPKcCP9cDiFBVmkJg28QVvcNp7NA45OQPgc+URsQhiIC8uCjT1oNA5vMwID99/vLdKTYzBqZe11i6Xav9IFoOqSymtFAuaZEw0LjQ93fYD1d4kivMq5q0WQ7C1vH3odPcLWxFoAgplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjMxPj4Kc3RyZWFtCnjabVC7bsMwDNzzFfwBqyT1oAQEGgq0BbIF1VZksBK5SzNk6u+XtuykQAvxQFGnI8iDGxCgHgJhDYTzVas3xec9Pxd4eiVIJgUOUCZ95GhcslAuH3tE7xFrUxCiOMQxZLdHqh4JJyRfkZxFUhZ5/cJRocFjHliSNhnTIqI2CzLhcs+DVWpS8Ui9VqEy7byAWdu3uuYpn8oBXgrcwNgUPXzPgzojKHAFF+JWfME7HP9s+Vs1hOCNWLfq7mVX/uPHEERMjLE7Qu2yzOLIG8eifDdq3j7q2hK6YZYe90rb+NtAx90P4RZb9QplbmRzdHJlYW0KZW5kb2JqCjQwIDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggODg3Pj4Kc3RyZWFtCnjatVZNb9swDL3vV+gPRCMlmZKAIIcBW4HduuU27JDUTi/robvs74+UKEeO3a0DurauLZkfj3xPssyzQQP8iyY6/gPz8MSjO74eV/dnY3Mmb37xaJdtoME8mUCpDX6Yr+befDia95/QZJvJkTleTHDeBh/NzkWb8mCO47c9gEOAAfgnAJwI4DwBeJ475cP34+cSAoP1gZzE4MfsAofwNiNqiOQAIolbcfl4XCIkZx3FBlFHC4xdAp+DdSmbHQJZmhMcEPg+jjM2HHQ8DHVunFryuV0WuXDgdJ7/e0Lz5W5j8ufjBgyGjbG+LxBwegDnLnJfpXmDdA4tlqL7nHBGwPMASKFccPGAOQOO4RZDieg7rhk/k2J9zhqLqWXfg0OuJboDdw8fRsDAITkp4gR4wgNLw/GbE7/xk8zKjC/uh7CvaIC7MJzVFZqLjIjEtRhKPIHqqcJmgjSaGD9M1aHmaTkuXp+uyCaxbbO8KjheG60xipIjt8klvqCbLZ4CbuLLx/aGldPDlS6fUFh+YyG5ALciGv+LiLylIXb5SoWVlEq+0y4i90AWUOFTqDlpw2ujXqUuVirwZqJKnSoZhdQio8zRc0f+kA6V48KAg31jLlXD14kzr4jPfxNn/hdxpi1xJpjFKcHYq1gHLUfsJHUrYMbV0nFFLfStriX0uqC5aNErUX0WziqUtc7zSzov9i/rfOeT2zIoApAtEG0edBMWn0Xdc71w5Z40sSdSqwK/zES25U06qwYL1nDrFtdsSftKPGWlx6kvZpGMNakYigpENJ7SLeCpB1jtWpqmRkEns3JJtKqrAp4Tld5RoE75NWjcd4qCptwOyLxCaqlNqq0RXXXY2rjsg3gtCmkZI7gQrhJgsChe49wkCm3xaw2nBc16HihmPc0SrOdosQh1AbRZIlV70fXMI16X3HKjUSGexAN1BecimDlya0dd/0nFwx3QJI36KzkbOdR1pYLr7vMKvn3a/Ghc1/Zib2mBdEdVoz8Jte0zWxCpQRy7/QixpnX7RbDyrPhxuc/K7Bg2aW/I6p5YChc2OEb92Oqne7Gm64eYg/a7fOhlTWVq2HeHi40K3W2FJa4gqqulUlRLq1VzEUO3TmoIXGzcjQruAUPa+KrzGdXnNOgZlQYbfZgPqTp86STNh1ixinyQTql93FcH0Pt3vwFncZ7BCmVuZHN0cmVhbQplbmRvYmoKNDMgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyNTE+PgpzdHJlYW0KeNptkLtOBDEMRXu+wj+QYOfpSKsUSAsS3Yp0iGIeGRq22IrfX88kMwKBEstx7BvlXLgBAcoiiEY2wnSV6kXi88hPBR6fCZJOwQQoi1wa1i5ZKPP7CdF7xLFKEGJ0iEPI7oQ0eiRckPyI5CySdNH0EcMSss2QlYlJHhnSJqK6CjLhds7KSmsR8UCtFqF06rSFMfJ8HXte8kd5hXOBG2ib2MP3+lGnI0a4ggu8F1/wBpc/lD9VKgSvo3Vdd5RN+Y8fKsSombk5sv/FBtYcWfrNKKEnWxtQCgI1H8wpdSM6V1bBr+xskKbfY26dmuZuqlxOdSffWS4Pd+FWaj4KZW5kc3RyZWFtCmVuZG9iago0NiAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE1OTM+PgpzdHJlYW0KeNrtWbmS4zYQzf0V/AHRuEFUqRi4ar1VztaezOVAEqlNvMFs4t93X7goSh7Pke3MaCiCQHfjdffrhjQ8D3pQ8KuHaOBPDZdvcPcZXl9vrs/DmFKwwz9wd0ijC374Nrgw5Zu/hz+GL8MvT8PPv+ohjSmYMDxdB2fs6GwcDiaOU/LD0/LnUSmjlfIKfpxSp6DUeVXKwtgpzX89/UYitButCwZlaD2qZEGEHZPWIuK8zget4M2yzg4uk6Gln556S4MZTYjZVLnrbG0UWW9GmKVVGENj6WSUimClm8BqMNslpS4ercUdzC4deQf4jOdmUwqIowY4FCi38N8GPfz+eWfw+9cdo2ATOvJzMkmvizLmCtfLjZp3UAcgBx83OtVZK724GQHXJ3h/WmYPb/WqdHAzOBcw0CnNRstompQ+e6Wd5XFTZss1kJCDYYnvtxM9Ju8zcEaZMaYb3N4fv6oV4lw526uGyJkFIA1AqKutQFzgBakHz5T209Yikm+bfMJNgQrnooiGuNccgDNiSQEIfzgObkHYYb91z2e+LvbtIdojHeAW9n0H6uVDoE7AC2mjG/gEQ5MwhtxFTJ3c2kgQEey3IbcL9VSZALMbsxxSQUVHzECOw0heA0mPRw761s+nhZNAptJS8n+4NeomOe76byd23+Y/a5Bkwz3/rR/iv2lM1mx0I8barhvmiMo4ACcJaJgsCOxSuOck3rBhPtgjw+cQ1wvUiRwAlaBe4nzr/Bh9DisoAKSg+AUkQgU6klH08mc2GuKDtKkrjlHi3yp8Y0Wwkx+t91t3LR9SEQLMcxudxDEU3zrvGnCZ1PGVifEShzgNBiRTiI9h54QBr5t4ZKkYPYA4jEzMB+6/+EBW7yWnTrmipawD0xSt1hECIMjWqqdhFg7aUAOO9uju26gcxThJdqyfrlxqGTe9j5vItLHXRmiXpyzzsf52r5mAGBVgvjziChi0wYIqjEEEzgdPC7BbwFkFE55UJLYWoN+xxUFayPSTQucvu+cvjf1H9lMmTvSIRZfcsDVHAcHCeVlz1WRCnzCqRcC++0hpB5+OEoqhYYAQ8lM0BZraAlsmEUkaaaNy/V8co+iSlTxq7EQkWN/GgnCsmZhpEOfDOgmYor/Dh33KEUYTURm4TABoN1NVl6ijOWJIVtP6MnPTFhMTsztpJMpI1zyiURmqOisTx+oYreD6hLjUfcIuyFVcH8yxgBBNKylwUNRZCFtLXXtqMgJitvS52exNucc+Q2ZusJJRlk7Z3dhhZfPikSTAXzjLMsyRymfpMLUroQSJGL1kSkt+dsUnUXYK0pvAyU8apHxEJ2O+6LLwIhvMvSuHFdh1mg/BZ98imaHXssgarzRyPx2zUtcHLmYfP+jM83VmOUmIhpeRlixo412ONyzGoNnZ/J5f+TCEvMuohn0ex77FRL9bFne4j+zuTldkUSclR1EILWtDTqap0kbnWZvwiGAgiyeRixaUKtPHrLFXpqHoTBNZXL9bZ5b8yFEnpzyxJFeSnWZIJpT8XsXE2sLRXRs3kCfS5kGapP1jqKhVr2nMBafpoRGMYx+84JqHxAfmGJPotRMDxeE10ut0UKTVsYfaNUzfnita0RiCzt4jI/OgXWi5sWHnLqc7OqucvkspQnJdma4Sekq+FbkTyzVrWcg2a3l0DX0DEgtvvl8L7o0aYz6G1xZ8/ZAW3I8JW/BOJ6GDjmsyIXcqdCh6ZScui7sgoMY+sxsUWt1OULW54KWZMihlGiWiuKnzL2n7IUHGODXnDiqUjtoRisk10zo5W5pxiVGqSw7r0l5JcdTFXPoS0WfWVlNulpw0TBiKNGN7wpR1oTk3utK9tQ0941eR6qhSmDhRSVOlDcAFjk331XTZrNnpNpyepK9oe4Jbp2RMtn0Jm55bgbph7utLA1YPKcUuDIu6unHdmuvjHn02SNT+0WL7GrZUISOPK0Mw+5UhSdMAqfeiz3ge8nX9mI8qYaHdxpYgbFQZ3t85lvwPW5pmQQEBZSJgMgBFa3mpZZmNvRvsdI+fxG/rdilDOt71Vl8xfkCJUDYn4QqhqiyygXenSj0PI3QlXr7NCH6M1pWvM+T23ncv+HUHfsAWYhynaZJSdVVbHV9++hdsosNkCmVuZHN0cmVhbQplbmRvYmoKNDkgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMDMwPj4Kc3RyZWFtCnja7Vq9kts2EO7zFHgBwdjFAiBmblhkxvaMOzvqMilOEpUmLuwmr59d/JE88nyXnFyI4ZxwFAlgf77FfgTFVd8UKMN/oALyx6jzVz77yO3Pdvz1qN59ABV19OjV8coXsdMUrTpefn8wxjljTgM3MCaQMY++pwcDJ2fAXA24kwGyBrjXYBmCHTf+4GN/wBBZyGNMk2CQCT2Y9L0/WO668uRHyOc8kXuGc2qILH44leO1/+P4Sb0/qm9K29g59bcYSjqYoL4q8l09+Uv9pj4vvDQa2Duj0Vv+bz2oLx9XLn5veABpSx4zIAdA7VxBBIbLU5tuqY3BdxHnKgVZ4PiB96yWmw19KEGIsQesOF5yMPLQFfCtz0eehFiuiUwOnATgZu6Ajs5V8Ih07GABXjmef4ZWCxqcm6tuIIrzkJ1HjKktVvkS8DSGEe5dxY0Wlv9bi6dJdwig0daAc5a59SxrJv/ARGomjsNZYsk7QSD1JZGSe9LGdTMXDaGMm62tNAdxaE0ylYP7FJLkqJ07Gp3uYo1J1x+6YpU4kTQKE3hIa7p8KwyRnCtXxA7r65ks4JctrqMF1jqypEPpOUuSDA1s/r60ZaqrJGPpyVon8EuHyVNSgvpmsES1OQrRr8Y6kaVIuzRJFYiSuZxDTKPSY4IvOmgqOYe4wXjJ7o391ZGlJpZTbE5AFYJJzuUsSoMl3kKQknu+BLVSkTQZJjaIZ6fZ6iym23yPybEM9iErDFjPRNdodolV6xHgVuMc6r1lzHa5KqRny/o4TyLl692qUqlEgTEpqlZDnnoWIa/6sawmWghroU9n58uYhxUoHhtnJq8u2DS9QFOjM9o7jRcLcsnxHs0sfCkINWXfxF5A3E3xvunr/Br6Au+0MX4nsO0RmNsJ7H9LYGiiJk/3TWDDawgMLTEouBPYTmA7gW2IwEKnXXff/HV9DX9ZY/lJudv5a+evnb+2w1+WgvbR3zWBXc2rCCygto52AtsJbCew7RAYgdcd4L0QWBvDUFdLReQKtyWOCuM7JGGCWKbw7ByE274NIQJ+HI8bBPOZnxrfCJf3PDRsFq5br65odOjcZuEabguXA6eJcLNwXW8MF/HQrYK13OLeqEzAMYUF91yZwOWnlAlYjQBz1Ya6XrbjtUSibakmb/4zmtOIrMf4xssqWs2bsGKmobwMTmNVQsBJxCnvDNs+aurBy5a//fa/9uDjgR/x3I/f/U82r/O9+gu70Be3wqn4pdR/PCd/6tkI6qh1BLWl4LLmBh9qoU1/oMmzQKnWGWtPFrQzrW06eO90sFSqm9pprm9aWx8+BN115XcxuEKSbslr6pD7xyKYulnOcDWSybjEln39wTv7n4uPnrj2+Zd/AJf/fYYKZW5kc3RyZWFtCmVuZG9iago1MiAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDg0OD4+CnN0cmVhbQp42u1ZzW7bMAy+7yn0AtZI6s8CAh8GbAV265bbsIPTOLush+6y1x8py66dOj9tYqTtgkRRJFGiyO+jQkfqQaECfqEKxG9Qd/fcuuHyq68/LdXHL6iijp68Wm6UwaAJnKJS22jUcv1jAeAcwKrhggDBAtS+sgvAlQOEDaBbAVoDyKNAWYRKLvymuiooRF6kjmkSNjKhQkjfq8Lw0IYn19i2eSKPNHepEPHyzSrXm+rn8qv6vFQPSptYOvWXbSCrAwR1r6wvu8Zv9V3dPtqqkW0DTd7wp/Govt1MdP6Z8AaoQhqdH9hut9tuZB+LaWxs+hqjuKEqQra68YDet1PqdVuLnPTV2Nk2QsaM92Ks9pT3MqlQfE2iLhylkqXZ/Wj8cL70iKxpMiCpJ/opu7tRaaU11z3GbL0snLBlB0kfo7ht5bOxQdTROcoO8VEj+tYj2Kw7nuS6eaLtDFqN0WDtWDXYsioXyYFEi4GL14kv4g5pMipEMZU9VOpFOIzSShiqAjvhDDcvKQHVrp4qEzLM2MLHe0HqYmsE/ckYjOPD8Wg4HCDPd9EB+4keyz7F24dXFziiTuKDHScyo53YY6IRCTSQ20WBChc7TOyilNUUuBgY6beN7CRlVXwR1nmBS4T4SbRCR9pR+d54BdC0EIpkkj6OaiFoLP2VanNQjSBqX8b3RzWwqSnu59L7zrTD/YZ51hEUJE4+jL1ScB4Keq9L+w4puMJxlt9Dm3h4FO8iagfhyrtZE2lDXjOouzLpzSyZtGOJcku3IBzfTCr9qMHXqa9FKXTInTfVNpwTkbPZUdMad9jsJwL/oPteGPTDI0Ue3tvCbWtnzMZN8Doi7XVOF2XeXn+GpghmOROy6F47wQ78qlyIgJYTJAhXAp5EQM6DXHj9BHzyEHcpznFyRMb875w7Tw7kyOlAcUcOtIGZ/k0MLDfW/VZzIKG2jGcAk8Zusyt33lzIOXbiPH8PJZ4la/EuW2qCiE8bP+fz02VOFceplDedc8eoDk+TAbaD0B2ErTx6nXisTMX58Pqn8J4jx9h8AdQ32yugKeb4EHRZlpNhXhXemcWUK6uQgd1/Am5ddMlhmE/hRL+eb+kMS3ZZT9oYualrN7ShbXNvP/wD74cd2AplbmRzdHJlYW0KZW5kb2JqCjU1IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTEzMD4+CnN0cmVhbQp42u1ZS4/jNgy+91f4D0Ql9RYQ+FCgXaC3bXMresjD6aV72F7690vqZdmxZ5zdBJ3uFDMej2VJpMjvIym5+9xhB/SDnZP0C935Ez19oOuPev/h0H3/E3ZBBCttd7hSo/RCB9UdLr/tAYwBOA10IYDTAEfb6z3gyQDCFdCcALUCpLcgcxfp6aJfeex30gWa5BjiIBx4QI8Q/+93il5dafAR0zMNpDfDOV5S0vTDKd+v/e+Hn7sfD93nTqjgTfc3K6qFA9d96rT15eHP7tfu480qQSCtDoS0iv4qi90vHxYa/6r2QBTBGJkMsmPrZIPgcCkqpfsVi2qPFKqUUMZMJIP2PRkTQ+ilpDs5FK0l6116k43Lj+hIrxAvdpZZdlbtcrnkNhp+HsZ2cmaVMNClXMQCSyuutPpm5feuuIXdTlkhUa/gbpM+o/qPtNU9uphWl6FePDxOd7xMKDCzX7SKmlrFgvBE32SV2TQhE0k6XqSySS1aNLUQuWI3NZQ+3BLs0hLLW37KZipGDSFOHHlKy2/EORk7ncdFs2AdYtsMVJW+X4eQQKxw5ttESJo92lm5XiaAxBmjC3m2c1RqC2gQvQBVUOOy00lk1Lz4KjmdZ1a2PLGPp5q34JjakgJ3AUN+QZjIDUlOndXl8ZggSLajlfaI9O6iq03QleEJiXU4TaT3IwhVi+diMpyyYbqspzBhAuzHZBo0Uhjp13KNfFKusWBnsr+MH/rx2abhC3i5Jd48Niuh88L5bybmxIDSFl+sDO4Lr6YxiQoyomecMvZlzhfx2o82rxnNbQlOEpTQymWTrssoXOTFZCkhx5Im8NzGxwmF1wPAHZHu7pRXpWKSU408FDf/W2Hqq7gglRHhLVZo2wLDrCTDRAg2FM9F8NoCXqrHTPAVvP3OZ6G8ZpuhmvBZKDai8G4AMRvYNJwZ0ebV31R+N9l3yop1dB1vbZDfLKszQStn8HUuuawsLRBl2ejlSVPXNtcv0q14mLU8Xp6QbWUwAsLqzk49Kdt6pWaymQ3+LezttmeKB+/9JAqlzXtNs/3OlXhgK79ZSsyMelSaaBCn5ntiVJa6JXYpbQVAc7KT7ABRYindOL2OIUzux5ZXVWujT6NgcdE44xNSczlD0stg/S9mW0WVp6HC/F1y4oTlMCNhSUJE3BjDGs4kB8T15fSYvLuFE5qKUaxHbC/lcwVhhpnUUuixqgX18yugVrFsXgB1HFJzJl9sCO7Ivji1fi7zt8c/WbO7JUYaNWavkI9DITQUWjBH2gMsCY19XxT6EnfT8LaG5hGLRl7VjqEQD0Y4EeeE/6bYrrUTVuI7ZfsXH49qJ4V04Q2ej76M6scBx4AWzsv/S6f1AByPBskfk6Erp6IbMGdkEFpv3QIu1TevpozXDjeeVSFtTTlrjHpa5bZ+krK0L2y/Eu6sNcIpnb8T1sf0pXCJUdY54X05hM3bQC6eNdEMit+Tb5LK85iQP3zmLWW/s0btl/C/ZZc8W9rH7/4BSLWbMwplbmRzdHJlYW0KZW5kb2JqCjU4IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTUyMD4+CnN0cmVhbQp42u1azY7jNgy+9yn8AnFF/QsIfCjQLtDbtrkVPeTH7qV72F76+iVFyZYdOXEwM90sZrDjTRxLFD/yIyVRbr420Aj8B42T+Cea8xe8+4TXX+PnT4fmx1+gCW2w0jaHoVHgWilMI32rg2oOlz/2QhgjxKnHC4RwWoij7fRewMkIEIMAcxKglQB8KmRqIj1e+CeP3U66gEKOIXaCnjp0IOL3bqfw0YCdj8D32BGf9Od4SYni+1P6HLo/D782Px+ar02rgjfNv4hB6tYJ13xptPX55u/m9+bzhLUFxCZaaRX+ryw0v32q/PhPxRqi2dHNmh0QLKBhwVrUDi/lYhs4XkaoVqPyIV5C+w4NASF0Uu6nntja5NZ4C27qgYY2K4Z+QBcz6ULNZ2YnZWAfRYLqcdTputdW2COrg3LjJw6VHDSjl5obVOnWymRQ6budT9qR0hF/T2Qg1uC4KDOOxdTgX5JWuqoVtSLjZlMVuqX+yrKhsN/aGLcI/iZ2z1pHbKJ42o+8wBAYrfsiQluHLd8po4lvLvVFHmD7qD9pgzmJudDtILArrrpmqgYb24cE+aKZZxkv8ilqRZ+DKhWOGDHDEcE3hEqA1nl4Qayg5e9gnXhHPQnNOaIYJYilE/KTFFUTLWYkvhegyTB8hcDiiBGnkm1Z5HXMvpVe/0sIAs5T0uuPGHw4BlOwWR4mJ3fSXPv0vR9jE9yWIAPt26C3RJkBt4gy/uV+lKWelShLEipsNuDrbDZgN7A5Ct4aZSyyjLK31etelO1ABBQmFDa7qMnZReIF4kSIDiYnQhuMZR9Kfca1ie9kWmISUZE1UqMjtCTlSVS0ALB7EMyelzToPiB9zpnfuUvpdW5ekpDb5flA2dxm1oue36Bw6rNC5KRGXNJciY/OgKwCRUO5oo5tpUZ0vcLPgRflsW00VRnjpUt5JktmCzWzxV9XzRaqZsMmkKiB6HIemgydDFj61bBf58KMumdNo29Y05TTY7CzRJmszHSPYpJ98t1cEf1yRUjgRY+KsIMC8eXUo2WZ7x2Z56LoCXch/u+ctMm7g5r0y5F91WV0f8hszCEYIz8ZYMpQeRDDg8RN2ZWMvMpJ1JGKZ5FxAV6JVZNjtdhn6JXZg/LqA6mft5aO+yHll6rE8XI7Qrpcr1GipO+97jTslzObwGUGb1AHlDdI2pjiWLTMUJGUzwoH5/MizlmXCOXEbkUIFQ89LRzmXQcypfcIBWENMEKRBlrlJUJ6bigmTbOUCUeCnbjykaDsMpbvwzlOT1n0NFsvLsHtwFCQPS0S1mu+FCK5FR89b+RE43OC7xQl7Zup7TLmBOj7lNocz0bPiOjhzGaf2T8bE5tqnVZPmNhmSKp57TKyKuU1hvIdhM7dtDaIuCjgtOYCPC+QW1ltQkFLvWpmG1TugkB9LjvQvjHefZNV3dFOqLOPCL32HYzQA9cr0rY4wj330/bT+JTu4Fv4bg1BZVoizYUUHUyFlOyCWAWC/mlmpTVUF9wIqtpOMLFQ8kaDWPhadTfUrg3Bvs+6m0s5i/xCw8eNb9h0YiNNa01RrmRkIvotn5PkvTSXo2W1HG3rKhSF26nwXClmv1XJN9ds1gYOtua0udozBShIVQodGiruf1+Lw8a3YNz75HDJvTis23DqsoniXrYeHqZ49n1dn/LEstAqO2Ip5oP5t5mvwbQK/Ptkvi8ndzcae9Ru06nKhkDQCm+d2XLm6GHJmfjLhjPH+IpHldRerpDai2mRKWFmhPx0jKKKYnJ1QLg14N0oit3LQwzqUYU7htqK2VZDzcuHQg1TGR38nE0UGau3yuf67lh4npRNtFjW2nPBO0/lEU3aPfAwVhUEWRaMldX8EsZ10ivPnadR1FS2LkZ5nbzhdavVxxsPj562uvkB14bkYURoRfh4YeEZX1hIbitfndtZa1qndHp5brzl1+fq7w651vs0BVMpJ72YxynB8pncFYk7t881oFjVGk1JyKcUsHhJUNkxwect7bjWSnTUVra4L0lVMBj0Eu3nH/4D2NsnBQplbmRzdHJlYW0KZW5kb2JqCjYxIDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTAxMD4+CnN0cmVhbQp42u1YzW4TMRC+8xR+gRiP/y1Fe0CCStwKuSEOSXbDhR7KhddnxvbsrpNNCaRFgqDW3a537Pk8841nbPEoQCj8ARE0/iqxf8C3O2xfxuebjXj9DkSSyWsvNgfs1FHaZMSm/7RWyjmldgM2UCpYpba+s2sFO6dAHRS4nQJrFOBXpauIjtjwV2+7lQ4JJ9mmPAgGGtCByv93K4OfDjh4C+UdB+KXYZ+b1jj9sKvPQ/d581683YhHIU2KTnwnoFYGFcSDsD7yy1fxUdxPq5SAq1JSe4N/jQfx4W6h89uiHVb0cs4OuFhAk4L3iA6bCVkGtv24VG8RfMpN2dihISClTuv1NBKlHUvjK4RpBBranTH0L2BxExYSb8xOYGCdpwQzoNapoQ+7VahjjSf5jJ/QoAdxBpp8BdSH3muGkua8GFURh2mB277AoGf2/GitvCgkAE7Hrm4oalrXGCu9rq4hrLFipeVn5UOeCflXsOYVFpLlHgZ1fm066LK4PJLMu8+LGGdQx0bnL9Yc0WA+GUGwiw6oUtUupaVUpiMG7Obs4ikRf0aBU70wriKlZl+H0a8Yo6PTroo4H1DyRkOOZEl18rVV4IXKudGagCH2Q22ox28LHIRRIV8SRAlkiHBFFF1GHLYjGoQ5WMefsvdEx1MJ50Wc8ifpDpi0dLQ3mmIgqxwrgMs2frBRJguTycZcg3s3E4V398JdvWaBubJjdmeG+icyxkvtqzlun1BMe8Gpi1rYDQBKGiWvFVUwPCNjI0hr3W0yNlSj0kaGYy5gq1ZeYnn0q2w9JYFvVd8aZ3+3nAeQyTnN3rBKuhSLN2Do+WxRngd7ou4Z1BojjXNHup+V+aNI39e+IdeqY/9lUamGIWsgySxtr7Z+Gwrey2jTv7NznNir3Sz6vtNmxm4KLNI4YkVtBqbILqj4cEzgL9pgsIZzeOwtVj1bK3Hc5jMEzEHNtoqywfi2uJtHNcW45QRaHFOqtyM1+SbAOR62b8N8wRDPlp4MFlQK/nNsxrEdHF+8lB2Wj+At7y47e0fpfbyec8gnOnwDFJK45mS7nFRoZVy/8cGYnqyWRvV2SkyVpDwp2fRQsw/iyv/TUDIASfZNHtwPbaJsUiBpzlkbTzOWjLcf5oeEvyhmsKSDcDtBY9MMSLZvB3zvQkcErtLK4fSSgLDKyag5IOhMzl6fKJO5ELp8Y3ZeO5OLK6TpgDxxd9vPudAUdDDfu5evrX5WMvIb139cnBJOhZ0LVdn8SnblvZPB2HopO76Wa9nlK58gYxyLMrr83WUNxnppo0aZekEBvGOUraCpHutNcy3qupV3Zr1EmC5Urs3tfmTRo+Xdv/oBvB4ntwplbmRzdHJlYW0KZW5kb2JqCjY2IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNTgxPj4Kc3RyZWFtCnjatVXJbtswEL33K/gDZmchRyIg6FCgDdBbWt+KHmxLyiU5JJf8fmZISrVlGeiS2h7RpMT3Znuie3boQL/oGtIfuNOTzu7UHq7GZ+dTEnavOtslHyS6JxeknSeP7ru7d5/27uMXdMknIXH7yQViH7hxO2p8m6LbDz86AEKACPoJAAcBOI4ArGuH1P/cf80QGDwHIcPYoW5nnxDrdnvcth9S2caYt33eX3op5Ema2c06u/DzjCSgxhFJyUC8VCLzj3Ro9XKKRjwTLenxqIGCQrNeWdB9u9tYfHnYoFQXsSn3Mx2OIxBNOp6uaN6BzioRZcVppUAtPYoAHgaAiQE1pfr/pg91zAx8VmuNR/PkOaWKreWMXYFXaORRodVS6rUduCt5PaLZvBKSuhIAYbIS33Jhk1pDxdBUam0Lw8nhBLV41NSmBc8TWsYCJ8tY25Y0rhdfNpgYvMS4oltCUxq1PpWoqT3M0S+J0MDyLauzOdbQX+X5Qk7D2GPoigeK/z6BkvgIuKLKgVotzZK1DBodEMdsS63/MNR/UxFJ8g23axUN/0VF0ScKK04Yhp64m9s7p6WGbMpa+7FVUTblSFhePLmHjvGXcgxKoa24OxYu8go35UW/I6+yqoWb71scdDOOM3J9R2UrmT7WcbpGpLaIUCVQWrQ6lyFZ6mPmNGE3i6hHqM8aRN6O+V51wJDGIRPncdIuDKHMJ6r/bZ3XqdcDglMb6wEhUWsYlhOiTm8dZQK+UcXvpFFFtEu7nbZe2Pcf3gCFJJyVCmVuZHN0cmVhbQplbmRvYmoKMTAgMCBvYmoKPDwvVHlwZS9PYmpTdG0vTiAyMDAvRmlyc3QgMTc4MC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDQyMTk+PgpzdHJlYW0KeNrtXW1vHLcR/t5fsR9zAbpHzvA1CIS2CdwGDVojSYG0Rj7I8qlR61iBdC7af99ndrl35B25K6nnxpYM+Hy7HJIz88wL33ZPsVOd5i7YTuMf4yZ0ZHAZO3a2I9WZ4DrSnVO6I+o8PoT6hlGtiw5fqKyC6ch1WsfYkUc/aE6x08aojgldgwULC+86Dp12TndGd9qjD2PwHX1n0C441VnIEJk7i66Vcp0Fe+VjZ9GlttQ5CEBg6sCSYuhESsMQ0EMUGzqPdg73XkQBH6hGwesuQv6Iwkgda0UdmrL2YK5Mx7iC9BDWQBONG3ZOSlAneAgMOTmiM0HIQB1cuM6w6GCoM5blgqEDANMmAjR0pq2FNgoXaGl1EMUD9JIOHRSyUuKhsfOCGVT2wE2zwYWgAcSs92IW39mgGBdoHgitGM0DENKwCroBd2hko0Jz1LMRLTSEsxHowAq4iKgMuzpFIqrDBf7TYOOUgGAApPShAb8b/ABKOg08B8xhGVwwwNeoDJM4ggiwJy4EKNRzFMXCsXMMH9GwpGOxJezlRGUo6wzsCYUdkOtgEmdQ3YMuqEeUWygAhR0w6iCwsxAfLuOs3KC9E+EVKjhxUXQGKwkIEMMDiQDmXvxOoa63YlspCRBHg1sQeDTYBRYjS5diUmjkApoCBhdhehjDRfQPmV1E90FBZukdPqXQO7rzCpoHxje8K4guEkPQTUCPcg/7Ag7YE4o4iRrb4dITMAzyjc4RK56hg4aHeBaRjFw4MQK64CjggYfR4i8oMWIxQcSIxRy6tWIx4O+tWAwR7CUCtBZSGOIR8InF4JbeibcCQO8gnJZYhnq4AAuJag0R4W3oB5Hs/eD16DkIyuhmwAyu54OV1lIShkhHoA2pA/1FhID2UuIluCFyFCVgUUAvJVCeYAAt7sASRYjHYMRHAXIY4wHAelE0iD0lroA3HBs9A+vIY5oAqEpaAd3gpXKQUBhoYv4BMmGtnNwLb6AMBaK4AkUpYwFMXDaKMwSpI3cknWrJAmS8pCKByImIURAJTnpxkgggG0lww92RkpTkBIQ9rkgiFpiRhKxREp3C0bCkLBHbIDJwJfEXjbSVCCLJs2qILiVtJbyiFqqYn2BXghPD/tKzgOhEFpI84wXiITK9YalnBUdJfFpgU5JCJcENmJNgg4SocCU4qCAJVTQ1WlKqSAtLdkkrOASRpGILoxGJBnFoMfQuowVJ724o89LT0GKoKz3AU3AnWsJFiYfaghzbQSO5C5KyWQYUSZQER8MIJJoLSibAtmiH5C5yQAdcGbEq7E4AQ3qV1B9kYBDt7TAqIT+TU2ItJBhy4gMyMAjvzz9ff//nl//YXGxx9dVPSMAYBL85O1s/u34jRc+QK1LJ85vri2832xfr518+W3+3+fcW9c//vvli/Prd+PXVD2dnv0K7e1X+7j8/b9a/ffPmerv+9u3Lrdx9ffXmn+vfXd+82ty8UBBA/bD+w/qr9Rcv9HjzWzT7dv376++u119+cvHj+c/bzU2vVxDzG+jyAnpaDr3EC3yyVzJ8WNXD107E8hZcrq7f9DpjGlwfZXwh14v5MSL0kjpEEBdOzpeO+GrTkyQbB8WRmEQOJNkTY0w5xiZSzzK2WOoReBjhTR+UP7GudIyxCarnKEGjehVHQYKlkzM+AtkAXCMTPkW9QRyJICGeXmM+Ymxdj/jHFNL2iH2RA0nq5HzNEV9jeisJiWBaDEgiRwzuxF7FhVcR9U7ytra9xeTCsO3VySOIK14Fb3IyEgFbLXKgjuaT8z1yKnhy74fB0PcyXzMaacVOCh9k4vUzZP4H5eT/MaUfN6+PHL+gTO8LNieT42NH77Kj+4Q0JoWdnkL6L998JZ9Pfjq/er29/uzHzevX17+53l6/vO6vrnfRjTVk74Z1L/fDUsYr5BUMzMhrQbtTCfHjdvvz7Wfr9RF/ZBWrZIiK/bDwAfsga22IpZw/NZhfX/10tb198cmX1xe//nZ7frNdZdn9h/Wfzn/aFFSsYcFlqvMpsjFky0pQ4FVRQCuviwJeYbRAwYEEP0MqtB6/M96pHGsx6WS8Uytvs1tQ3f4WDP3+DtxCi5tJ3MIBN7MKat+DXQW9v3OrQPs7v8JsfncXVsG0eMVVMfssGcZVyBS4WoVMgSvcjqCn9p9CwxDzkqHHqCqsM7OW3P949er2hR9kl30m+QoDpLLLdNxPPoEt5h07PfIakQvpZCYYzUERatmDIl5Fd1BkVtHPiCOzgU9u377MOOWuk1eLJWIynsu2xVBWdqBXsidVIUgLqhF4JXtWFTHzauZIVkzRMlkP68ou0REvMwjhagQRwtcIZiWzkwrBrmR3aVFsN4q9K/xUAq4lt1vJRlWFmV/JxlWFEFay9VQhxJVsbE2EnL1ayU5RjQLYxjw4678VbYZ4iANMw37q8K1V+vYNlPJeKh27Eqaytmxt1VSAHUlVKTAk6SoFliSqUmAP4jtI74+kJ92WHsakugFgTXJVCsxJvkYhmJNClQJzUlyWno6xpzb2qC2bfjV+wJ6rOBKwZ65SgD1X3RQiyAb4svTH2LNqSw/suY4jsOc6jsCeq94GhU3V2SCB7AQ/xO0H4Yd4kkOHIYA4BRK78dvQcs+sj3u2TVhQW04JaprA3KbqrCzaV52VYW5TBRkiyEnDsvTHWdO0hYen2LoZYG1b9VWGtW3VVxnWtlVfhVbWLMtu1LHsbeFRW45TauxgE1tF0cAmtuqqBjaxVVeFCHIksyy9PZI+toWHOV0VRSFUQYStXNXRYCpX9TNYylUBgqGcf1AkxF2ImXHyJid1w7fT6Tt30nF0ozSapVHOcKq5y7AvRu9Yf//Xvw2HWjFiOOrevH39+ocjmqEetq3SrHU9PKJOw5yrSpCt+yqBrYdXTLQxkne9MfeYRlZpxvseE+c6Tbs+NPhRCMgZDRpjerjXzOc0OTitEpwLfaAGTWvZu6rSDGMOZOo0hnI+NGiketfgR1b3yCeJNoZTRYGSUCpwQCsUKGnWYo5ZJw0bsrFB09xkx+jS79yOM5ruPBwl7EQZx7uKbqUn5Epzg1B2ZT0js9XEmxcBi/o+Uo3ZUbuW5KGMTt17V6chpnu7g3ccQOrW5BazspHsbUau00hjNVePl7y/Mg0E2zfizyCz7GPzwDWix6hdk/0IQ3c3uxzSxplJg2ZnaKFNy+E6opkZmr+bLIc+WdK4yMYljQj5zNd9KLOdnhGyjJqD4OAyIWOtHBrO7LDk1XWajTZz5gMayflKnWYgJzcChJHkyTRoOh/2ShrJiVWDHyGwiBo0w7kRSpoOfUM9HbHgtw0a4oRNPSSbcew49jHUaTbktjugyemobeQGJBsVa74yIwiDmWpkKAYz20o2YMauTtOB9zTMer7c3G5vh+eTho3RYdv2avt68/nl5vJSKctKecxH3Kv00bgnfOLZ7Knx8/ObzZvt8CyIMP/T5t/b4QmRKhMT0fEGnZqxc4cyZxJjHstdTOWbs9lj4wPGz282/xqeUakzxsc7dGqTVi4xknt/NnMU/+zq5nY7dbz++vx2p976i+u3EODXtBeFcgxcQxSXdNcJ6EGEUeeh/OWh3ocbcrnyPucYG6ZViRtL7+naJ848z40q3BLUIWMdWl4lBg0j1oNyuCco7VXmYeIAoOMS4iTju1Tu9/WcnReV26LGGZ+PI9fB9ZL/D5JQAkgn94z7sslsO1fms9lT/8mHQuZDI2KTD/FecJfDqhs+lPxngCuOlhWhzQTfZoRwoPlRgcnn7hRjdGB4l6OZ+9y4/V+RMKWTHbSXe2jvL+XYbvDbTXIi6Uen7OEyGifTTHVS0E997njYWbNxU/vRJJP23I64wWmE08XeRnw+floISH7MHXGqP0TwJPmr5Iyc2T/1VfSbEDxEUtpQ9sE/xVQJrWJjLINjPNWZEHCPBAE9j4CpIJAcwuZw+EcCB8/DYdtwFPkrPBI4zDwcrg1HkSzjI4HDzsPh23Dkk4aoPjw4dnUusulyBSYzyZHGpqGutFnwpNCGLubQ6ccL3V3ScWzCNDrVBBM9cpgWxm2t2jjl85jIjxynheFM6zZO+ZoumkeO00J20tTGKV//R/vIcVoYADW3cTLtBdNuC8BmkMRxFS1rVfPqrhDNrZRNsShN09dxURqLjQ2t9yoU1m3tbKRxblrv7USdFvwXyVqmVLHlFacYT3UxcY/55DTec3KaO8hkqUKstLlVn0UtiGkrYiaH8Qv7SJf7jYhpU0J8fB7deQehzEFG/pODhPrOV8g34YoFYrznnPeuakksFNuHyblyp2nyOFVMlc8W5RbMJmuk9GOBAPXPU73LO0DiK5AMLkJK5fjQ48HHTPtMJttzDYdbhgu4hTZuOseNH5FfcbZPRxNuCzjFNk70LpLmMkR22iH22WTE3HXz9fAR1l0SnuJlSMLJ7lMSNvUknA91pFqTjjSUubSTOs2lltRcgumhXnA0zxrm7uORwbtI2pSvjxJKE2Tuw4CsHji/AJS6AmUKRpvj6j8QXIuB7hfAk9p4ug8huWX9VU07n/xMnvxsnvx8/dysTH7F9Cu8o2Fyk9TOLFw9unqHw+b/3Su58MrwgTlieq5hWqmZfFJm5x3S5g4Zc4eMxZq56pDl0KJV++mIhzjBTr3/EfZTOKHNd1cuGof25asEmUPpfFmg6RHDpMrHMOy0TLhMzzxsFmCzFdhGV9P63QalLR6due/e3XyQuSzIRj1SkI2+ML/vkNLR5D38uLznLvM8k56kcZvs8aJsVJvMNsizsAglV3gY59Da9xTa2Ye8DgKQ94+5DX1cLMDhK3CkgDPvc8Dd89m3o/cUs4A0eUDaOwRkmc7d0wzIAWaVbRvH4wfILO93jEYeC94YCm/Ml/o6PD2YbXZ2Im0NjTDvZH/g4QHFCszJtX2OeXyCmN9zoseqjWU+bpN6umni2D8rD5ZssuNJmllMl6/MNbHPV8qkn2juqNQxE//pWHkhVzA1MaZ8GCT66N+z/v3gIXOUzZjl01bmtq3yAxbij7ZastWp1hts2jah3CbmCdrkITnftvHMF3NknyCeMXtZIO43pR86HWfXxjrf+KOnuAS63L/5c3Sm88B5Ofs23vlZE/mP+XtpLrl/DW0B89DGPF9/UviI+Szm984995jXtNerlK9XKT7Neb5P80qfv9+XHhcdZJf78/SJ2cGln3lsrvzxlyb++RqXn+IalxMvPWG+gGV7zUr5mpX105wP3jVvm/a6tOmG78nG9Z2fCSt+Py/bsM6eXE1+sjumtY0d63xqzI9tqT7zSIvNDwj4+BUwY7NlHu2P4peWdaZYanO+kmPzEd4J3p2rT7Bms4A93AtQmwrUKdILt7ZPB3fjMxmy18uF724mJn1fLmBr29i+58d/i09sFz8yus+eyWdS9rTLT121T/ge+L7/7jGfLHh2CHItIMo/ATC94ZKfW3LxIEFsvONPp1LkbOYPUEy/CpG/XxEaj/Z6yn+AoYjmO4CeP4x+vLYu/5bAzsfzRR23HqFrprWz2T8ccMAkBZJvv1bkUiCNrxedzfwBhsl7i7E/zP5eS0I1A3IyTRECLuuEx3rfbG6v395cbG67cUo6/A768/O/b3YamulnPt5scX/7Yvc7hP8FNZb0swplbmRzdHJlYW0KZW5kb2JqCjI0NyAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDUwNT4+CnN0cmVhbQp42l2U3W6jMBCF73kKX3ZVVWADdiJFSPxWXGz/0j4AASeL2hhkyEXefmGOU1VFAuljhpk5B9t+Xhe16Wfmv9ih3euZHXvTWT0NF9tqdtCn3nhcsK5vZ0f0bM/N6Pn532Z8as6a+dnbU/34eP966dvPqTHdQzZ8dQ8f7xWXrNNHpL5fR82E47rYX6dZn2tzHNhu5zHmvy2Vp9le2V3aDQf9Z333bDtte3Nidx/5nt7sL+P4pc/azCzwkoTKcczWDp2exqbVtjEn7e2C5UrYrlquxNOm+xWPFD47HNt/jaX0aElfnjxZSQQgAeKgELQBRUShi8VEkYtJ0BakiGJXcwOKQVsiKUEpKAXlRMpNVoBcZkm0EaCKKEVsaUSE7jE0ZJgzhoasBEFDjlliaCgKEDQULhMaSkeYswqJJHnGgwpE/TiHWhmCFCgCoYqkfjzE1FKCXKYCuUzyjEeuH3nGY3gtM1AGIs+4hGeyALkO5BlX8EySZ3yLmApAqKmgaAsHFRSlcFBBUQqXFBRlcFBBUe5iUJRDg4KiApMpaHDuKvKTlzcnoHFZtm598ttqva1uXpJcXqFaGLhsxONfi1sICAmpjRBYXiIHYQQRgvATBVklIpQXxc9h1t20ngHfR0B7sXbZk3RQ0G5fN2Zv9PdZMg7j+hXd/wHdOBWDCmVuZHN0cmVhbQplbmRvYmoKMjQ4IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNTc2Pj4Kc3RyZWFtCnjaXZRPj5swEMXvfAoft6pWwTbYiRRFAgxSDv232dWqRwJOiroB5JDDfvvCvGlaLRJIP2Y8nvcwsyr2bt93k1h9D0Nz8JM4dX0b/HW4hcaLoz93fSSVaLtmYqJnc6nHaFV8qcev9cWL1euT++leP/+4dc3va923j0/+fHurw+PLcyWNaP0J2c/voxeKee8O79fJX/b9aRDbbSTEal7WXafwLh6ydjj6T8u7b6H1oevP4uGlONCbw20c3/zF95OIo92Oykm01wytv45140Pdn320jedrJ7bVfO0i37cf4ikvO56aX3Wg9GROn59yt5CKQQokQRq0BiVEmmMpUcIxA9qALFHKNdegFLQhMrwuB2WggshyZw5kQCXRWoEqogyxeSMi7J5CQ44+U2jISxA0FOglhQbnQNDgOBMaSg2ChhKdpdBQcmZGVCHTkJ8yrkDUi5RwwmiQBSUgVDHUi9RQZAyIMy2IM6kXmfB+1ItM4afJQTmI/JQGXRsH4h3IT2nhpyE/5QYxG4NQ00LRBu5aKMrgroWiDA5aKMrhroWigmNQVECDhSIHDRaKHPq0UMTfwZK7kp03hm/klObf2w0dez7f99P+9++QJVkiK9TRMWcjLu2Hv0MpqNW0u1I4n6oAoTOlQfjSivxUmuvnIDihKhCfViausgZxFdKlElRRDlTMpGbvQA7EsRKEKkkFQhULdzUyLXrR6HPNf1z8v2vL2Fjm3X3cNbcQ5uFDQ5HG2jKBut7f5+Y4jMsquv8AyxxFBwplbmRzdHJlYW0KZW5kb2JqCjI1MSAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDEzPj4Kc3RyZWFtCnjaq/9PHfADAF7LSDEKZW5kc3RyZWFtCmVuZG9iagoyNTIgMCBvYmoKPDwvTGVuZ3RoMSAxOTI1NS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDkyNDY+PgpzdHJlYW0KeNrNfAl0XEeVaFW93rR1q/e9+3W/XiR1a22pJVuy1VJrsyU7crypndjaLCuJV+zYSUxihwRIIgIMhwxMfkIyA8kMw5kxT05CAnESAoEfhjnk8A+fM4TPh8/PmQEOs3DO/DAMuPXvrfdeq1uWnYXA/yrrvVtV91XdvW7VezKhhJAacjcRSNt1O1s7Clv/ogtaLsHvzPyZW8W+XmGGEBqA+p8dOrF49MzB82eh/jQhda7FI3ccqvvPB75NiPnvCUndf9PC7EF6fPbzhGzcBfjZm6DBuMkwCPUHoR676eitt398qOa/Ql0mxPTLI8fnZx2HI1FC8o8Sonvw6OztJ4RPmXcQMtYA+OKx2aMLZ3QTs1AfI4RtPXFy4cSG7PbjhGx9CPo/R3Ssm10ieuhbYlPQMq7c6QHSQZELYiLKj0iIBW5UrZLJQ8MHyZ8T8lsm/GzFAHM/TltFQj+JfUxgl/gjAnmrn9uhHCPHEJ+9weoIWenRPV78LvvmyptQj6y8qdQ1PPJXKxsq2l9aU9fG+x75csV4Sr2EJ5O0KJPdU8MFURx/jph3jMuGnfum5E6/3FCYOSQu7Z6SWXz2yybgf35emvNHIjIpyCQvDV0EGeRnBptlmpbFmUPNMkuLB0X5q5OyLrHvYgOtzg/PD8uG4amILMQL198wFZEi/qUpUZ6chKZcwS/KPQj1FArisoI9e1BugCa1Jspt2N+GmF+dnBKBmqVZUa6enJqBFhH7qhHKIpSd8c8UCgW/TFOFgiSTyamFQqFZFtIijKOLzwJl+vzklKyXBmWDNAh8FGQ60yzr0hLQJR5c1s8NitiDFPsVCvAqCzPD87LQFIHOvLgkLsEEy236ODC5Y2pm0j97fWFKKkQKopzbOQV9fmRNnb9Z1qdlYz51kTBFUgaoSoMSSFwanJXZ3CGZzgMVsr6pWTamRSS1Jj//nI7MiTiCnJspIMrMECfVlL5orCH54cGmSEn2VelKXVQro9AUkJAHvmfE4SVpFvXC5UX8KFNZ9AORGpWgHWl2SJmi5iqPyzF4ivhXWSt/qDbNGbpYUy2Asv1SpNAUaZbr0suMDcsHZ4eaZXMaEEVRrs1vxccBkAYLch3WrodaHdSaZQsMU89FIoIE5mFe2ZyfEZdmRNkMQmuW69Pju6aWdQeHCjG5bkG6vVm2psd3TI3vVBr9EWi383ZbeplY8runli2WvExnB2VLCm0WLHlwuRYvdXCRqQs0IcQnp5ZReMDt4BLoF6dtikjwmAb7lX58BFwBWwrAySjQPwqtlaq6igKXCbFLIK28TDZfpJRyXdnTZJmw4V1TskUaFIflGjC+agkMblCcgemfsVopMZPBwaWZZZshJT+Q8kdBTA7gzZ5qlp3pZYp3F8gZ7+70soB3T3pZh3dvelmPd1962YB3f3rZiPdAetmE92B6uQrvjWlJk7tsmAEJS2KLTPejgzTLTWWdrlLn+5TOVFlnotR5UukMpYlcl3oX/IWBvxDQJQJ/eI8Af3iPAn94l4A/vMeAP7zHgT+8J4A/vCeBP7w3AH94T6fFPm6mzWmY1joj5kG3M3muSnC9NNpqS1puTsnN4IWt4ACj4lW0KM32SBgRr4nhR+7bSqqlLrm1aVlPncNTEMiQwfZyyVzZ3ZEWuzi9GcCjw1dOAt657uTYTlxP89VkaLPUs9xBnchcJwgAKF6fYPCK2Z5muSvd4u5rlrNvhQoWPA/o3aAT4oqLLeIoej7IcsvS0qg0CqFiCpYIiKwQDrKUOh0g0h4IUS65HtB0EDXjHE2uyqcWllokUexbgvE2VKKILcpYsg5aAFOUZzBo5HZMPcVEQfQ/xRKCrzCIgdQEMVni2NIIuHB+rT/OYDBT1g2WnzkI1pefPQjdLD/rB3gGA9naZ2aBLAjv0ggoU4IZRoA/uPFZYLx1JpGUkKmDKAFK0INl6a8YFUZEjuKcCLhOKqFydS7Q/UZNDiK06hOqHKQ+EFFvqUs28f4RaRQnRe31lcSHzKgSJrumWsQ+WHKRerVRRLo0FRjiUNtSvrorylvPrFVNSWjbm8ooyWuqmsEUYC3Lmno3Q6BoQSmOyPX5qUk/LJliX6FluYU6wEH7K3qv909W9ObWffZaTwyk5Z7UtSYcTMsbUktAG9oXMHVVVFBoi9wCT+Q5y2ibmk7QLCVwlhbwM2XUIYg7sIRoiO/AiEffK7tFLjBE9UkQhcosJFJQaRyG2NqT0uQwArUNqYikSkLlpMT0KDDtVBwc0gvwZXuL3An+PHaV9i0wHHXY5S6At6blbriNo9yGQcDiCKylmqQm0mjC8jiA29IXIVgBsB0AisB16YuUt0wCwFt2IM4wANcjDgI7EQeBXYiDwO70UxD1BgDaAxDl0N70U1RpmwJIaSsgHkVoH+Jx6AbE49CNiMeh/ThnHoADOCcC0zgnAjM4JwKziDMCwBziIDCPOAgcRBwEFjhdgwAd4nQhtMjpQugmThdCN3O6ELqF04XQYU4XQkc4XQgdBRlvLCnwGK/JmwE8roD9AJ5AofNaDmrvg2VUxTmpgIhziuNQFedWeLi3NOppXuNPnFFAfOI2BUT022EcFeEOBUSEswqICO8H3L7SeHfyGke/SwER/ZwCIvp5eFJFuFsBEeEDCogI9wDuptJ49/IaR/+gAiL6hxQQ0T8MT6oI9ykgItyvgIjwQPqpKh3TktXBlGxakIXY5O3aOtwMOhMI7BuZCPuxGuIiEVL9bMhdX2sgQlvKlol0OK0OKRLtsmYNburKdlk7pQiD5mySJgxOa4NEL0pScbvUyRj9c6bTF+e8evoZgbHiLNOxS9LlJUliZ/Q6dvmvBapje/SX79Yxthfgy1/AveVGoOAic5M60jAuJyancjVgFO5xaHWSCT+vkWmlVng6HmFGVyprkKIJICSb6XA5rRejPl8UfyVJ8tHP+OBanMfMgK5MsqmV77DXYOzEsuHgUM5PcLS92DfNAKLXAVhHauOC0ZlaNpAhlujqUoZ1OgzSQ4FQRAoEJTblCtgDLrgEnbjVJdUrv2Wn2deIjwRJPBcNUp1AtxIdcKOjh4ggOMYZ5RQ7PJJd0hu9qRiOF00kkxGjgVPf2W3PZt0dLrc9nkmy01GXLWjqLH6/0xi0+vzCb0yiwxY2vlm8+dWFgRpfxGW/46zdGfBUVbM9Dhdz2i9/6Wu/IFx3ICm2CLqzkwCJk65ch12hRiA6vaBbIKCW/cC1Y9xA9XqyX5FkMBiMB2PJCNBhBOqIC8nThJrpgJoxkZAkZ6Yj28WyXZ0cZrH8/Qd+g/L93YuphtbG+JOfDzXXd21u/tun6fE9Q7cdkHxs0CddbB52PNz4aEO0eL6jrTf2MkilAXb2u9nLJEnacmBxVKBEOEcERgV2J9CmnyZ6vWMcSNVNE50uqJtIJKPxaMxg9KWI02EEgSUTUtRgcDpcmY5u0I8bCcb2BHCQxQa2y1LvtVrbN4zc1HN+cVOzzeyzWeot26fmnpjb/8RiYYItSU6Hs8rde3j4zFm3yWV31fuMyZ2fPXXoszckQacox8+BHOuJl6RzjVxuOoqC01NB0ARntRJi9Vo9bicgmrMGsBviQmLKxGdTBGbN0P9+3+jofQf+FUX2r5P7big8+SS7tP/xubnH9yuiuvzshw4d+lCxCf0A53fA/CJpzaWvrT1+zhKORWKK9mJcexF1+kiHUnVmFEByRuiv0CeWkQx6nU+K+ou/+inefkotpyS3V1SIifi84S/g5ctEo6ca6PGTxlwCWxihC3qq0wn7uYUDaU6GpPiJr0uKRQxGT8q+Oqmj5KMqQa/+A87/D3FvAMkYxgrbIkd8rujPkRaFAleUz4328hH2TdJKNud6E1SnB3tmgkFghnNGaiB6nUG/AETQaRBNYBxMhkeIIJdMK2mWEmAXCRNaDzpyhZ1wZZXZExhUtruLeySojt0cDc+dnv/83Nzn5+e3WCwRj8WW3Zg70t9/JBfIeQ4g1U/Qs5Lve5J90+yTc3NPzjaYfBZv3OQeODYA/6pN92AoUuX3QZBfmCRzMTU2LBj0rCw6ALVhErLHJXtc9UKrIrauSJn8MBhFkDo2F40FvLHiywmvX0KI9ie87FLUf/lFpOvnP+cyHcTrP/6jT1JoIK8CDXXEnqvnZqQY0Hph9FVtVKk0yuUXFV3QH8EYAdKQiwNPaAfnQPkwFqXCtA6cIyggKwHiT0gJvdGdciWSXJwobRBvtjQHuskzc+HahMMXsjd4g11iwhuI5kBsrU02q0cK2SyhTIA+wW30xr5b+svs0EbCuQDnQaCMkQMlV7ARa7xTB/xU+gHOF6H/hJb/vE8Rl/40mHekxN2bJTv/GXsBYmciJ0Vs5mod8LhVBwsYsEhLioqTWLwljtytqskKsTxpSCQFa7m23HaI7Bn29Xg0EJCerPaZ63zVT4o+rxj3WUKm139i8pvZCzD9C8gl/eTvai2UWmqpvnjQHwXa8t6Ypba4TK+rtZToewj4D5JYLuKtZutSFySBeKKSuiStpIrinZ0JST6z31D8RNjrAdASNNIjYQ+7JHouf9knVZnofyvu9oiih436pNrqYhu94BH58S73ydfAJy1gs6gJiEyq+0F0VN0PvC6qgzgQM5S5HHhcCyvzNlhRXpt6ZHb2kb178Tp1T3amb9N0V9f0pr6Z7G+fnJl5cn6eX/NHc/3H8vlj/bmjeYUGlEUGZOEAGmAlMVAdSEhHMBaw/XqqGqWTTjhhnXaGnaGgH3BtUsII5lGK02W+BbEagzVf3ujjN/b03Ji5gKqSfG/Y42533H7hAru0aXFT302bXuDaAcspymImEMiEf6TStLLCHgSaGkiGZHOZCCxnccgs2FaI2KA+PV0gpZip+n1jY2OmsaO9tUuKg+N7uOEqi5yy0lbETr7SuWDBc7ncbJVadpel1hL2OMZa088HPcEUxFSx88bubKrfIOhM5uejLlfU9sMf7vOZbRZbTeO5WNPXNAZ65jZ1TAfSW+stYb+R6qIbIoHWwP/W4m4z6JhzQgQd0QnkHBcxvRO4YNOg9cA4X7FxPQrq0fYypENKNKGMvWs9H4hNalbg1gIvRl4wBXeIcXW8caLdH/XYLQ0TnT07Jvf+cPDkSP/xeDDqttT69sf7h0cn9ix2jp4Zqo6lPEG3VBsJdcSbM3Xi3/Tvb0+E3SG3VOWUWhOptNnSuiPfP50BPkKgmF2gE8hmcyEUurAf45RmHUC0izgkKaY6DC5YmrOoK0GEdUSj/s8kAoHYZ1Bu9BL4iM8XvvzvPMjWopEQxT8hFzwD8SOMc4Fj8igLAWqalMV4cIxV51R8oxQTy2Ik2yOOnNux4/xILOCJNY02psabQz72AgTDT+28e2zs7p30Fp7efqptvKFhvI3e4lfWS+T3fvYSZC5AgxOsj26FCLEa7+HqJZ5kUsfdAIxNACISELgUZWkhaz5u+HWVaLMGTb/WNzitIdO3njOFrOzFqKfOfPlFu4PabWyo2uKPOOzFJP2BzYFz14N0H4e5G8m2Z+PBWoFA8jkuByGRt0PSz11SEMJarPLnXJD3wWJOzqm9akchVwdUNpIGsJgk5hIanUYIZcJ69LqzKt3CmUbhG4aQzSZWfezjQL8tZPiG0Oh1iIY/vccUstuDpvc/ZIg42EvxQFXN5UtWB2zdab74AjDksLKhmqpA3Gkr9tEemxPMw1b8Nn3Z5uRylUCuCzwHUiKelvpA337FlDrjnTziESPVEi+e3NOIakfQyBbMxQ/SfjSj4hZfwkzfX/wxt6mHPY3smL3oCcOqFANe6M/QrKJeHlck8MUWFoG5k+QjuWo37J2qIJwwEK4bhOvl/mjAhSA8bsTkcFoTsbKNCpYjoBlwLB6zgxT0EIIMk+n2cgTFWCsQCoWcIxCAVT0ZSERFTPISsbipYoGpCPJunqHwzJe7d4bV4qYsQr27W4dPDOSO59t2BaO+B66/fiB3/Y4BFgGjLsAK6As2jp6bnDw/KvkpxNb89NjYzMzY2DSXwQDIYIK9gbkHOZSr9sLOplqVgcIiYy5M/wQIR2hkq3IIoqn5oZXn0YscsaIX2AsGAWoIJqUI5i7xeEJhT1klgL81ORiwaSvjjz6icLU7oO0/PXta24G1AWCRRRSmkgEDT25vRbf9bqi5mEfekEfFviC3+mfQcZIcVDiKr7c5wlAbLt8d+XPSGjxtrVkswyrkzDBJkiTisVg8trrNA52VgjDspjYzJWdfVSY9f5PPWe+wV1Una8d378m3ewxOW5032HNj57bTufztEyzSlXZFqix6vWn/+Nh0rWAxiV5Pk3fs/PYd50ZLtvsGt92HrrTdIGqLK46vKOvbb2Qt0jo2HIa50IoXVdw/thG/Abn3pyqN+BXY1d29asSKLCKgYxFksaiwloBmCnncOf4SXk8WYFNj4GoLK0k14Tm1H/YNGqIOUGDbs6g9UYZWyFkikQjs5Z2JRCwa4dseCEPKstLNbddhXJOQxYyRLrABJsY8xS/V7sk2tvj1tnpnKBA40LbrrqGxM/nB0yPFjzupQbe1FdaX3rzFKlSFHH6XWxx5/7Y99wyPnR195KixqU9bf6gM+m4iHx2X/cBhyGRkBgPf17sgX8cjHB1o163uGv2atRuMxGgg50zUaLw6Mli7igfN0A8yWSx7QsECVcNKBBQ0OiTYwsSkKqMf5OAs7UjXLPAZ9ZxHsYKERMXADZj43oCenEUouzgb7w449DUGTz07m3S3hj2ecPExvoueQ7hl/EAo7IH8wqDouYf1gJ5TpJt8OGdOgui8VDDWgP4ENV41gdMy2L2cI6huExguKLwKOFFUWUobvBi8GjRkxAMBgPLXRy3kXOk0IenudLajDaZvSsSlhnh1+YYSk7Du7Gpa1vUWVu+KfvrW0M2udsEQtFZX6W6Ib93iKmRGTg0OvG84M+WP+h7cvTuf37Urz8N4/uxpR7UzbqxyuQUq9Wbbwh2KNzSFataEdDyvBmFVga1EyfZnwpTqqCocN+EuDC3TeMoQ1pJlf86pp8r2eZGjsPKEIUoicfhRE4bSjodzYr0iftMXJlC9qWxPvxa0/TszLHLH4RXC9Uq6+/MZBWY81fpRLLOyAhol5Bn2Gonyb2EE0PY/lfZmVuAlQgZyVaLbZNQp2Q/yY1UWJ0Fwr+Y+pbZSsCt8CdYdie+ZlPQ4aaxcdqyaBxvdzJp0+WxPt2ukf9/udUmeT39xt9cbdbzYfPMq1cWPvWaP2z3Oj7xINDrJ14FO7RzAdY1zgK9LPm+U/5aGu/wpRW9CAey7i9yZq2mGdYlu7QBf3aKEdBf6rX7aZDQIer17HFK78ljuI9iIKIZpHhnCqxg5D7ZAHzGAgnEd0LpUl+4inXHlh7v0VbV8FZ13uDFFrKtQ/BoDOCe59/eubwUVMD9bro9ljjUNrdqyHWQSJbegLXPdozTsPDxDgovaZxXLmptbxFuaOZnWzPxd2fk3tiNrLT0bB0ts7u28CoecK2usU12rwKf5Hr9PodepbfTD5Rt9P7JIMDwtlrUWvvR2DwDyY3eNT9w5NnbnxPhdY7c3Djc1DTcq1+fPj4ycx+Axen6yfVtT07b29ommpol2NR/sgXwwwvNByCs8kFdUl+cVqymvW80pkDCUtpeW8gqCvVckjeWIuXApcSzvVAXhVfKKP0r2+ArPHhdQQ7qK7FFZb7T9wV8p/KsCoSAQP68ISqVwhXjCZWnSuLrilKVd7jW5WSXiatpV1oePlVakK9OueGXatXYFyq6XdkVLWVf7roAQ8ZTSLjekXY+gTL4ZUPOumN8dKm4rW2i4b9LHeN71l+OybXLqmSAmD1v9cEdHLfDGnB3jcMlVS9mJssMCIyD0BEb8mbUIyvZDReA9hOhmFI/W0ha/2o9+TWANR1fhQuXpiuLXIglD/I9pG97SAYnBeaX90NONostiF5y1vrawZjbuPe2wCLvDYUgQxYHmf1516brGFMrBC3uMl0AOWbJfITt2lYOd8Lj2KiaoB+qja9FA5wLovAypkKtKS8mUxF/UZDHFUDIMfu7TwsoOfowaYxgCtJMfcBKvz2xx2kMDLdu7ejZu6eoudGQOBevsZpvLbNsQmwikktmxjo03tA2ejE3bfLYqezgk9ARDlnpxoLttNJmI1zvclhqzy9ft8ltqLOJgtn1LIt2OfFvgcoQtkcZSTgp7JeFePSxCDPJLDAJ8KdIOako5KWJBekkN1Gg4V45OypAhJ63AAwxANTII3qtY6gLWSBrsPCWN4QIWcznXz0TLMlXlLRfd4e6Nb97dgsloC67IowiNuuwmc23N+/wuf7xrD3WIHnc4h/rOIVT8ldOu03P7h1hezdzgfZsVzmz8cMpdSh15GOeNjN5b1ljI1SpvdWC9UQ+tVIpLr0aVJBJq9GfR244dO8NzZthrRH3MDdnHkbNnjxR5HrKpt3cTQHyPsLLCHECPj2x6xoWbGjVPMuuUeF1KkngDYfeWDoaQHB/xJq1u7byOnwvxg6GKAyH676LpeaPfWmUNmr5ijHrtomnpAVPAylxhd62teNDqwPMd+mh9vSPisBVfob12B9Vo+ynQ1kB2PhvDMyy9Rp2H6MEL9OSc0QDZOuQwDH1aWa+xSa+7F7Zk+ntL7bAbA3IbSDKetDqsbvUllHLilkxAereWcJ7fud38AO7liO5hQ9hmilp377BGTbaw4WFdxO8IGo5cV590uk3bDhtCLhCxv8pcPGhzUhZ7880Y4zzV1Hrjdnvxh9+P2+zfpaLdrthAD7eBDvK+XLWPCnrcjWinJzFtg6GyBj693j4kprGp7V3WQ1O47iDt8UQs1hBXuV67+QgxZfOx5vwTG62KMT14OjqqbTuMUtI5mu881jmZRvvq7urcoNrX3ntuq6lSNxyCuWrT1uqB9r09NIYmt0L6uzdtoIS//8J96XdYHVj1kMKzC6IX288zAF3ZW11/zoE7bVDiQnmzYnpBEuhMdKLprb5g6sx226XVEz6HwShk6AXwzuKL7rCp5l++hp5KO11hQ82/ffdY2OMWI3ar20I70UfDbovTXPwW7Cvw3HYP7oVoFiYCiulfKPsLdn/pnctm/s7Fr76T5gIP8FfSdBpfTwfpRD0EmXp/vc/lAERzAt9Ju8pyLwy12bLF9cd3bN58x65d/JrbsiWHv9X7Pnf48Of2Kdfbz545cxZ/+TqKwSTCz9IbcnHIJ8Bx8V0wpKfnBOWNi3bE7CLOeFw9Yl59Q6aIqRvMnKxE8Tx9s8XqlazmT1t97BK+Y+Qr1uuJqoS7PmDaV4VztsLlP4HvRtKSS8FUEF1157QjD+Repyt7Fw7xNSk1dRrUNynaEWy3xnSJhpJAjMYMfR219Te+kO31eCrXFOz12AKuuMORONgyeDA70H3+O8dQV6LXa/95w45o82BS9ESdlrAj0dIzt3nTB3rv43HjTfpTkE0nOTcum8G+mmFB0At6owALgkD1AiybuDCwO8FrDPthaXBUht9MCR9WW8g3YTGmet21n1IWlU7SCczFwZOUXVEp79Tev/BEu5L/7nKTNRrp9O6WwdsnY2P+eNTjcKc6wz3SQIsjJPisLl917SPf5EbcERI9H6Zf6Zvt3nJ0o83iiHoaLJFwbyLbZ6KmsNvsqvtrFFTE7/E8hDa7Dy638vfFYdRemH+NoocYAhZDlSRo9T1MKKi8NpZixlIGpL3/6lJP0pUwkYlkutguIKgJV8Li71wJC+2zh73RpuKlz9I0kvABtKQPSB6Xjd7rgTDxt6/y74tAR5eBniwZyeUzVDDilzoCFXQULAoj2p2gA5C+UcClW79f+xSl7JOCLOmKdcfikMGslfV6wlY/70FrU18JSEbM3nYf3jRxbktyp6+2Puy1+ZvExrHU1ow75rU5a5IRGtZF3DSCIv8Pu32jj35/0y0D+ZN5j7M6Vm8L2n2JXDw7VFtbZWoKVuv+w+lHjj9RY9biBP0de4nvi7K5jA8j2VYwIGCLCYvq9yOrX0lUbl0aKt6Oqkm5euqA7BjX7Fz2LuT6b8kNH9mYue/W2hpfNOjpP+ztyIUHB1vbBgba6Df7D2+Gf9vuGt3yxUcjgj/oihhtN+ZSxcdGOjtH8JfHlb6V3zIrjyvKe322/4pw4oivvrGipc+mtDcr9BdJQ/E3xpDNGzf8vPgmN9Yb2aWIr858+Xkb2Km5jhZRSsp3Un0gqHqYz0cSsFBtym301aJNbi0/QuZ7GcfqjhAISSb9/mRHsr055U/446mUto8pyaq7ItQaEwY1PQKBVYjth139h3O5w/2zUvPG+b6++Q2tktzd3dTY3d3YNjjYhr90x87mDTM9PTMbZvocQy3dN2azN3Z3DNj/V1dDY1e2oaGrKPY2pXp7U0296jt5EOTv2Lc0vdv4cZqh7BiBTeNb8cC49tVXud4bG8r0XhYju1d3ZhUM7Fmr8U5uCKjzVtA9+9YVGlcMoULvjOD126yenzFMqGciOqp+5MezU9iOgS6ceADuhF2VcuBb3l7I2fiaF64PepwwUF0Xrnk2JUHVPt6T2Jr6QjgcrAtWXuh94aAVIbgU71iFQYCBldvID8hJWHkDOa+Vv1MF6uHfvBK8kk1RAb91Ue0SXYYLy1iyB+cPotmgy1dv1wWcVmtNbV0o7Ux3WEY67c76OgOzeGusRj3kopKzO6PoMwaXT4CNjpPryIO56gFqqvLDgqtlbI1WiwFyU4F/g7NYQ6uqHOPm+jrBaDRN11Yzkyk8jjsVvvlMYgPvJCbjTes8qGIWctEJ8LaJ6yau274NJt46MtS/aeOGzo5YJBaXnFIsYjMGU9SobU5W41s5qO5kVoGsdmpZDipDGOFJlgi1YiI04BD8Dk+Q1j/hEAIONwAxbM4qvTm11/I5tdciYfMLoSdC9NkLYbcrcMbuCXmqdAfOONxhj0l3ANt4x0mlY99JpWMf77hwgX9vSslLZAnMxgvpoPolqPpVAJoSfgqaXWM6hVWDqbCRDvJruo8eI3UkpH5bupu/G+bflm7j35bWdKoDquPhcLthnbqAi9WFX0eVw9YIUf/OUv3ryWlL3/8B9/0Zwn/3/Cf/BO/fG33glWK0+F19m+5xwDWiNRL1OeXvMfU7i9GVZ/Vtq3+xqfywdjYGEeKX+K3tyiRvOU+qyR/xh32cjLNTGK+u0v9tfkZ97TH63hrnXdPXAfQ9dw36Xrtybmr//elhDZVzIh1v5zkho+CxH78zGtivr87j/4sfdsMq/eyL1+aF7X7ntLOTuMe6St/Lfzh74uP/JQkJX8TvY36PMe7Hb1DWtB2/su0PysdxMsCEq895LXrY0B+WVtgvh9gd15h/K54Dr/n5JX+f997KaMOqLVHzW9uV8F8Uutiudei71jyH/ri6fzu2odkAvXhtXuhPifcd6fZh/r8PXH3u8Xcmu3exJoRgOQ79PnPTN64ef/g4H72yH3TcQI8QPfOQVlYN9v0K2cfyZCOLkQawsz42Ab+x/7/i+Hviy1YyQvGvWMpl8QzkxL8hG+mDb3uYDvjdTI6QP4PyP99doW30norytbWFVb+jMsa+UFF+qRXB/JZlu1rOrVO+I3xHZ7tK2fUelcew6HVryk1XLY9VlJ+8s2IIGR58i/J3WjFOvMtyydRQUS6UlyrxHZbPVmcryp+UyqNvu/wblhrbFeXRmkdrdVcpu96j8nrt63W31P1LZTHfcpXyi8pi6XiH5W7LL1dL/ZF1yqU15e+1YjVbx6yP2hK2Y7af2DfaT9r/hyP7RytLjleU4jzjfPRtl1dwJ8aGyU2wW/tTYoAdWxPpJR+BCHV/nQvqlP9nO4dg10d1ePBt4ztAhCmxQU2BGTHRmAoLpIOmVVhHAvSACuuJj55VYQO0P6TCZtJJZZInx8kJcgc5SW4mi0DNrUSEONlG2qGIZBe0LMB9BzkN/fPkMDlFZskxchDaJuGZ4+QW6J/nTw0Azq2AfxzaT0G9gY92K4x+CnaXrVAWYQzEOE3mSAs8dZwchVZlvJMwzm2kGbBnAe8IYB4D6Dbe27rO/CNwPwptR4D2RpKG+W5TRxfJ9TDWKfg9Sc7AFWkdgbmOcSq38+eAJzFw5ahiEOi6cq5BePoI3DPQ28ZLL3B/iAxDW+86+M2lJ9aTm9a3h1N4CvqRNrFs9GuNqMlUkegpwELNnYC2U/D8KS6RFq6DRei/DjjH04vx58ir108tU/qxgkyV/+jgxDIxDj49mgkLpAnBZzeaEiabSTAptSFDmyFg4LXqwUvmr1Z9VfdVMJwqqNcNXiI5XnhdIEPLMXr/jik5d//UsnBwaDmBta+Y7gYzy90/v2sKUQrw82wfhFSHSahteo6ufEjWfXSZkaGn9AcNZGjo/wJ+5423CmVuZHN0cmVhbQplbmRvYmoKMjU1IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTM+PgpzdHJlYW0KeNqr/09l8AAAFatREAplbmRzdHJlYW0KZW5kb2JqCjI1NiAwIG9iago8PC9MZW5ndGgxIDIxMzc1L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTA1MzM+PgpzdHJlYW0KeNrdfAt4G1eZ6DlnRjPSaEbSjB5+yI4ljyS/JL8l+RVHfia2HMd5W0kc24mdpG1epOkrhbQ0hTYBeoFdurAtLaVlgeUCctrSXtqlvd1SYL9CgQsFSqFlly29cGHp3eVVsHz/c0aSJcdJU74u+31Xp545j3/O+V/nf5yZFGGEkBXdjDjUvGlrU+tk6T1R6Hkc/mb2X3vS1/UZIiKEK6D94QPHDx65du6mU9B+CCHFc/DwDQe+8Ilf7UfI9ixCra5D87Nz+KuzX0co8TLAxw5Bh/g3wn0I9ZVCO3DoyMnrP/Wy41vQ7kFI4g8f2z87fvueLyKUTCBkKj0ye/1x7hXbBEITkwDvOzp7ZP762zbdDu3rESL7jp+YP94ZGz+G0JYXYfx+xBMffj8ywdg5Qp9IGne8F7XiJmjTIfbzIWSHG8420cSBoTn0JEJ/JNyrSwJC/L24yYfwX9Ex/Dp5nD3CoTf69UDpQB0UnvwLgXmWOvh7M98izyz9FtrWpd8a7RwcOrrUQX4K/X/I9t+y1FLUzs33Gvq3ovmMdn6+NAr70mj75FDK50s+imybk2lh667JdLs3XZuaOeA7t30yTYKz/8OMzGj/fn2f1+9Po1QaDeiD54EHAzP9kTQOp30zByJpEvbN+dJPTqT50K7ztVgaGNo/lBaGJv1pLpjasnvSr/u95yZ96YkJ6EqkvL50B611pFK+BQN6di5dC13Zli/dTMebKeSTE5M+wObcrC8tTUzOQI+Pjkm0FqO12Ix3JpVKedO4IZXS0yD2+VQqkubCPpiHD84CZqaBicm0Se9PC3o/0JFK45lImg/rgJdvbsG0r99HRyjGXgMDek1zM0P701y9HwYHfOd852CBhWZTEIjcPDkz4Z3dkprUU/6UL53YOgljXkpadv1I2hROiwMN5xExOCVAU+/XgeN6/2ya7DuQxvsBi7SpPpIWwz6KqnVg/6M82uejM6QTMykKMjPIUDWHz4tWNDDUX+/P894SLpaFZMyCGwCFAaB7xjd0Tp+lcmH8Ql7K07TPC0jmsATp6LODxhLWizyeDsBTyLtMWuFDcpgRdN4qcSBsr+5P1fsjaSW8QMhQem52MJK2hQHQ50vLA6P0cajo/am0QltboKVAK5K2wzQOxhIfcGA/rJu2Dcz4zs340jZgWiTtCCe3TS7wc4OpQFqZ16+PpNVwcvNkcqvR6fVDv5P1a+EFZB/YPrlgtw+k8Wx/2t5AdRY0uX9BphcFLmnsAUlwwYnJBco8oLb/HMiXLlvv1+GxXN1rjNNHYCvQnhRQsh7wXw+9xaK6iAAXEHLqwK2BNOo9jzFmsnKG0QIiQ9sm03a93zeUtoLySTooXL9vBpZ/WFUxsqH+/nMzC5rQkD7b4K0GNrmANmdDJO0OL2B69wCf6b0kvMDRe2l4gaf3svCCid7LwwsCvXvDCyK9V4QXzPReGV6w0HtdWM/xPS3MAId1X2MaT9ENEknXFwx68oNvMwYbCgZD+cETxuCaMEorDX8GfVVA3xrAywf00bsf6KP3aqCP3nWgj94DQB+9B4E+eg8BffReA/TRey3QR+/hsK+HqWkkDMuqM74BkO3MABMlbL0w1dXGcDrSkI7ALmyCDbDedxEp6rMdOrWIl4TwUuqb86LFnnRT/YIJu4cmwZBRAlsKOXPhcGvYF2X4tgEcHrpwEdidqy5O+5HnIeZNBnv1joVW7KbEtQMDAOPVEYZdMdsRSUfDjSU9kXTsjUBBg/cDeBxkgjxBX6NvPd35wMuRc+fW6+vBVEyCiwDLCuYghrHbBSztABPlSTsAjAerGWRgactAw/y5Rt3n6zkH83UWg/gajbnSPPQApC89Q41GYvPkg8TH+bwPkhBXnuqnhtQMNlln0PowbOGBlftxhhozw2+QgZk50L6B2TkYJgOzXqjPUEO28plZQAvMuz4MwtRhhWGgD25sFZhvlUV0w2TyYCVACCbQLNMFs8KMlKIgQwKuE4apXF4LZN+V44MPek2hLB/0HmBRd34obWbjw/p6uiiVXk+efZSYLIfRtslGXw+4XIp9ttNH8cqJQAhCa6TQuxvCW02ts5LSqW6vLcBkICeqGRoCrCQ5J95eMBSNlIvDacfA5IQXXKavJ9W40IhdsEHXFY1u8U4UjSZWffZST/SF0x0Nl1qwP5zubDgHuFH9AqIuCgoCbUw3whMDjGSqmzmZULXUYbM0wj4zZh0EuwMuJAf4JpR4/Vult5QKaqJ6dLBCBRriT2VxHALb2tGQ48MwtDob/HqWE1lK8kSvB6LdxgaH8AL2srMx3Q77ecNF+kdgOuxypqNQHw2n43BLUr4NAYN9w+BLc5waC1MVTiehujF8HowVVMahgmllU/g8Zj0TUGE9mynMEFS2UBha2UphaGUbhaGV7eEHwer1QW0H1DCr7Qw/iI2+SagZfSkKh2ltF4Vjtd0UjtX2UDhWm6JrDkBlL12TVqbpmrQyQ9eklVkKMwyVfRSGVvZTGFqZozC0Ms/w6ofaAYYXrR1keNHaIYYXrV3B8KK1KxletHYVw4vWDjO8aO0I8LgrL8CjrJXuheoxo7oOqscp01krAa23gRvNwpwwqhTmagaDszAn4eHu/KzXsBZ74lqjSp+4zqhS8OthnizADUaVApwyqhTgRoDtyc/3dtZi4O8wqhT8tFGl4DfBk1mAm40qBXinUaUAtwDs2vx8Z1iLgd9qVCn4u4wqBX83PJkFuM2oUoDbjSoFOBt+0MKTXLDa35A2z6e5wMT1OT8cAZlxqBYyMR/kY1bkQX4kPbKmxCELiGtu0Nr8rW7Vpfuro2pMKMGeWFRt1/0EumM1OCS41Vodn9f1zLjeTgj+GOFNmX1lJvxRjpDMLOHJ4/riOV0n15p4svhpDvNkh2nxZp6QnVBf/HuaW24EDM4SM1KQM+EAfShJQocbjQX9RPQ0xAS9OgRrxtpaPW71rKooKvuDK36W1jPtCC/dSMaWvkE+hmQUWhDmBhNemBijnTQtnSZQw5ugKiNrkBPdDQsCGiShaJTO6Xa7BP2Yp8RV63aRMacmac4g/AE7UOXSErmSPIHKUAWqS4QqMM/ZYSYyinjAmscHEMe5kgQzZF011U7dJJY1BOiE1aGaGr/I7tH2OKa4l+CgnyNXarJk55OZx0bNTpsNFN1s9kAHFjPj2PNeH684rJZHHnHZZE7gyLtdVsviO36EdyAmo72A1B6QkQtVohCKJlpdgBEehRHexPHzCNg/BVS7kgI2mdCUwcQ1a9aE1gRr/ICHCNghD0XPn+Wov5U2xVhI191tsViUxKLtUFfbiGPshl2Zf6fsxZZt0+3Ngb6ul16KDTVt3T7wyqt4fteGfbOqQm5W1D0T0W3Ob6x7HQ+uyzQPDg73Z35NZdoMmfxh8mVUh5oToGGYw4g7jTiCOfJ2wNE0jUymiiSgzE8jnq/kx0I11SEdcClvQG4X5VxNSK8WBLfL42lrjQMDSzy0n7I0BIJjHCWHRYvNbJ6Y3nwmOXZmYnqT2WKziLaaE7Hp+6b3fmy246oGcpPDYrWaomNnd6bOJttNstnqMJfrux+4Yv4TU75KROVM+Xov8NWBylE4Ucf4yGPKSBPmuBwjVRUhtVwtK/UAoC0mgB4hD2VfATs1yj/GQPzDM319Z2aWMGUhWjp6betVm7/zHfL49L0z+++ZMli3eNN9t2w+s2nxi8AvioMFcPChpkT40hJlZyxVAX/AkGhgFYnqfneuovrx7+km+QCT5TG2Yc5jP7u/hMe7NVlxGOjArnL8kV6oBFEWJwFw8lLthzbhMJmHEX7KhHnelQT1d3MUHS8q0wEfQSzN6dfy8q789vXj39BFH8Q+tvjLqmKjKB0mj6uKrP7RQVf+Nh2iyOR06EbyDGpGvYnuGsybQNcJ3RfCaRELyMQLpnnAAU8Di0CXeB5NAzKVjEPNqFEPgarUmKlGedwX6A5Dr0jJYvEoRRUwbSNXqvbI0c4DD+zd+8CB6P4am2qVzMlt228bG7tte8PO6nsUTVOewLAFXlOlqmoAAtDyUotD0Ux142e3bz87Xup+hpqpHB9PAB+rUGOiQeYIoJszIfOCiRQYEUC8Cq1xBnVnMLtZVcHgnz9XydpBP62QWRVriqJlroSbTdVsiobvdCrAUNviLdBWcH3meUVTbeQ0bWVeweWKlpct+ijgpKCyhEfBDCWqaBe3vHfnltDyEy7eYsy19CdyEubyI39ija/EYhZNiOBR0BbiSmKDsmAwpPOgH4Z1rMGiu5geZiJBSCZMTroVxZL537dnabKp+K8toCCWzOu4tMZqV614+uavgOowJFRb5kP4tKRZZctvMvfkacNLgI+GqhIVjCqKSsH20ZAabOeBwuK9w/iKf0WV8y7F4OZgt0PJqaSqLH40vy9+RL6EdCpPnypxmFphzCEwcqfBzRULVEe6OxgKZjdHbj9wQg2wgSvYHtRD4FgJeRYYa9N+ISlEln5Bt6OqiA4eCxgsF90qiwwVEsrcrWAZH1j8voGfrIlC5jp81k7yOJ4CHlSgQMJfKhEqEB5c8rJEAKwCeYM1bpNYsoxZDS5EqQQzNbvKrimiwme2qlbZocoOM/68QyaPO+TFm+2qwJP+xeesDoeVnLE5rIuPkXbZwewq3b/fgP1rB6WmkgBrlt2qYFWzWzUUClUzvSjanR53IynYmOCYvrHjw7OzH95hXBNDN27adOOQcf3dA1NTDxw89MCePQ8c2nl2DAy9cUV5216X9ZngiQTMA3d4RO0GATNG+UHDejzmdgNXKt0V3jKA1fSQCOqRs+96AU/atJyPxB+bbGmZjD9nRCS/7Nqwoeu558jjbbs7O/fGMr/NqU3m77at6x3P/GQZH7B4EG+1oliirRpcIWYxBVh4EJsJz4Md46YKI4u6urrWutaWpqgeAqvAthCzZTWUXaEi5PytDGPRA/bNU8L1EgOAHOZ5m1kSK6rHYz92KDYXmF1b5662gVi4A2O7+k29J7Cx99Ww3WQWzbxjw6bhTsP3U/xbdsQSs5q6uau3VcJhrnYw3Jmk1GAUAPkSkG+UUoI4HvEcOs3Yi98OVJBpkHhFknl76r8qTVTnoqhdD0WqQ9S+eUI1zN6CbwcpU9dZ00hWGmhqoUEPStYQJov/daxddsqyNH7Nhummse7EzljnwYG1V/nsLlkSvbtaRvZMblm/q7P7igGpuU2yyS5px2C8oTPgdDZu7I5uaaoLqbLVKfpq+zq6esvd4c39bVubDbtRDbLpAtl4qB2jzOcgDKCCMDQEYDzIpeuB7IZxFShG1nH4SR1w7TlquJ5j/vZF2CWKYl+8i3Fz3qGwrcFs5u/IVcwnwFqwMZntBSO17MHAEcDmWN6cxv7I2ancxmD7c5c6fP2GkeuHVbusxaZi8am4gzoBJbNv5NTw8KkRfA/zuPs69sbjeztoi+GgA73XkX9Apag6UeUizC+BiVh2A3AtRSU1NTzbC6B2WDBsRFZqTieIisxrXOY3vMNisfOZ33Ka1W157Zcmu5n8g2oVzYu3WKyShbxDkBSHZ/FJ0m+xsrXXAHc/BTY0gFoTTTQq9JdLYEAhtgb/SDhmR4uNVQDsaE0glLWjIse2AMcxhDgDIQ/FqCTGbm3cnRr5EWe3lIif/azFbbFDwy1LDu7pT1mcEHF/8imzh3zJYQN7apGc+DOZ7U7A82ZBsKmSZfFpfL8LY6slM0V6nEw3wMf1QC6gU3npvnLVfKGPC9QHAtSWBbOqayAH8b+TW2aY4eY4EhWdst3y/e9Z7LJd/Mk/05b0veet4OjEn0Qksw2UJ5h5EZCRJNyKW82SrMmZH+KAYrearZmvU5xoklJJnoT8ZE3CW+aUCE8lSPCyAAO1kO+AAol5R7MCE1IpvAQRhPqy2SU7LM/9kxU0iNwlZ76eeYrp71rcapFlzUZDB5vTauhuDNbdweLCYKIaliRTiHKBLwiWWVBY3h5sp/q77GUhFfJndwpjA/aTPqqZfpsq4Kcyx9maX7FrQmYd/kSnalUcTtliIVvovtGgtvhZakMjYHdkYgX3FUaHvgDOzcTj0WS6dGIyUSkAEiXJnPWpSoo0cJ7OCsib8K8cp+gyIOaaKvFYKuGqhLSgMlzZENSphwwFg+ZCDxmNFgeSlBoSMwL/nMvCf2Q5atlc98BVa3uv6uuZK1OVu7c2NW1tb9/a1Lg1ipcgHOul5A5EeodPjY3dMNjV1AuRXFN8tqdrJh6b7umZjQOtm4DWCPmXLK1lOVqrKa1AgIeSwk1TqgpprWS0rhynZiwLZFiZC2iFKM2g1fB7sLPcrqIwDUjWVtJ66+G1a6/q75xdk0vNvfu6mhit0W2NTVujxDp4w1jyxuHOpn4aNpNPM2P0g5aejN4x290zHYvOMGKZboFs8Y9BthHmU1bJG6knqSpMHOGxCAoHwVZmY2ZPNgEP1YSKonsoxu4rkB/evbnFbpUUsyLbWyriu9tbU52BBreommVRtjVvaxs5sS5xMkms7oDbqpnNiiBaOma6embispW3iaJdVmsqhk6NjdywwfDvhm7+9KK66XkD3fS8pbqpXkI39/f0X9ULutk9V16gm3AlP4Ugc5IKabgxAbQlTw11N+Eg5Kujsdme7pl4fKYbGJCnF2JtK2SkdagjEYUeyBPxafZtgQnNU4/BBMW0j5uGuKaSG/P7/XX+Wg/NlP0sPwPrkBOSYR+Lo8ESSC39UQgJYdvImXe37O5tHiuxSpJD8s3GNl7b33d4bc8V/Tjz4/02vN3UmqzFqtozHa+tsjgkq1TT2n/d+JYb+zoOjz40kTRHBnTAEdiIt5GXAesDyfQakE4QCSISBXTajEWRHU94IG0A4UAMgFAJ1Tg3ASnpOTjohnGgd77gCQMqlaBevg7VBvQAxAu6RfQ2aILbbWjfBVFDm+G8cgnpT/TjVlW1HqdSGpEdDnlkZG1Fs0OyKB6FfKY+eNAhy47MLLOV94KNtB9cN6Q6ZYdJYPLoAJ9gBe3rQSOJ4dpyIphUQJOMipCzAxkmE5NCVdIMomGKVklFw0xCGRqLRGA79US6o20wRUMoGAlZ8okLkwmN2NhxjBGzXYYxJLLa97YRfWOcFy28IKju3lhqvuxw99CxROLY4LorwDR+fGdLy854jF5jeAlyuk3jx7q0CrtokQROtJTO7+iNrTVUcV04Qc1kdHbt2ploThMx2gSXn8O+01EkUe8z8lm2mzDmp02M9MKUrBoyspUpWbuBsnqBxcMfnKSy6O2vTzbmbdxMK+Helsr8KxODt29z7UCN0SCfYvbthw1xtLSE+mC5vyb3QmwJq2MRJPQM9FoWMH50aSnd1kBx3w6XXwLufpqr+UrMIo9oQsmsN/VWq6fQNeIK2xzM7h2xBP/SbVEsP0rmkMV+i2zVrN/4QQM0rD9P/E0Bnh1/kJxW2fr5Vw37C7igDwAuubNYzyVOBD5QeBZrTLc4aciC64cYrgPd8IVoEwsrDY/loRvKNG0WBc5kKklChGeYvmS6BUbLEe2kIAKAEEEogEiUF/Ujajhzgylju3WgOHCIypVut0vIdTUxuw31peHsL7dTktblhN2TqBuJ5KW+p61rm+Y+3km4Y7uzsi/t31o7VJt59QJFwE/Sa1ddrCMW7s/p6H/A3tTRxMOGihqElzAp5zW1KqepXhhZ7mRJc3YklVDenBpT+vBHd2qyovYNNmxszhM0D+75yK7MCwxh3cD+R8vYQ+a07NdqAPcVuXzVn5PL1/SfXL/+ZL9x7WlNxWKTbW2TsViq9eFTQ0OnkkmatCR7qKOh7iY202PgsAlsWwT0ivrW7kRHNhhi/lKgRxslBcENZWcZHnuj8OZCLl0kvOmarczxrHxfdz68adwWJdzAdaPJ6wbjjZnfs331XhrlDDbFMo3Rvd1dU9H2qe7uvdGsbb5Y3LpMRVWBy08aRnmVuPUCmDeODdTLj1svHhtgTVk8yfTDthwc9IFFjqyMDQx9PwH0rkGnH/ZST5kltiRv1fK6bThXYztAaohBz8npldsi54KXAYp2B+MM9b7G7liDKoOhatfyoXS1Qad7pcjjeIvPYTVVKsGRppyMS6bWEavDAelX567G3y3vh8nOJGa01UPc82mgrY2931j97KMqmXvTUWkaa9BrGqoD9P1GLOtAs2ceNUVn0uLymYcne+YBHfWKIMlS977m9f3dW/c2bmpt2FllkUSrZC7tDzUNkKGB9sGGQxtPbdhrUURBGo801Nfb3QN9dX0Bf0BUZItg9laEw7X1quLrau7buJvRQA+n28g5CFRmk+kI47yJN50BG8tx/JTAnCaVUo6xXgiSKEDuqLMIEC3D5cMfiH0CgWontcdO1UXpzYU5oQujn1x09GBFiaCZLIrP462vGZFVVR6hEpmzqg4ZfzmzEPKa7JLNKbWC3GgkxF5pHNOssp3p3NIf8C/wnyD77DW0SWOHKyWFhyteo5PgMwWdqYRsJK3BYNBUvG/yRy5UYLSFX1CPzs4coWiNDQ1vBOX4E3jSV/ZdccU+XM686isbkskNtG6cky2Bf5dQOT078OD8MUvV8jFLOSqvXT5moWcbQqiGay841oiV4B9q/NO83Sw5+C9zDrvFzv/9Z3i7RCw2q8WcaTdbsSThZ4mZl1WrJXMV/pDFaugqrE+ehfVDubMWvVK+8KylquCsJYSCwZpQaW7vUIRq6DFLDrECvLJnCeQxlftbk8NisfFnrqFIqtw9nKZY7Ny7roNAxfyOM4KHSA4bljPtgJdkwe2ZZwFlqwU/K4gKxfhtuMHpzHwPv89lnLfgpwgPPs6XqKwuc0BMlD1uKSk4bimOh7KnLfHcoWJJfDkiekqTbdaPfMRit2riA58U6NnL3XdKdsUufvyBoCQ7bc98RbbLVvO3v0dPWpSvfU2xW63m737X0KkOiC3NqBUlEmvLsImXQXcIPfGnb8ROiwIpjKwr86pWxnjZilpApaprQ9k3UdlA2oij83YgKlyoa1ll+4Hae3SofqTUTTibWRASXVtny/bGd+5iYcpAXRKiE2IGnVu/6XiXZlccxCxJnH5ol17fdiiF25g+Pr9htG4ghOtBISHHBqLOE6H4/KbkMs9v9OLzG3y3w6FkHlMcFlz7R7pZcZvsMIMUbR10czolRcJ/S2uabLVmDiAaE4Ob4nZA7lWNYzSKwTE8y6IZTJ4yYmTudhYjc7kY2XgG/2b5GcB61oAlNQyW5ONpguIQq1Sw9w7e7PtcJo4K9joXT9NXu5BMO8BIObyOco8LAG0h+j7XUxC0UCkx72gcP7e9cDgeO7Jp05F4/MimHVNTO7ZPTW2X9t5/8NDH907df+jg/Xt77zt77r77zp29j+05+gH9r8mXkAeVJtwOieAN0AkGJxvJ02BaW7YwWdWNxeOxkp/YnTZFe4coKmA4Py3ZYGfJ2Xc+I6O8SxZt/AGB0DXGgVgJ6KxF7YmWctBJmjRgHhP+dC7ZpjTzfIFUa1FNjV7fTnd2oVjjOVLzmOTOSkTRj/8Acs2ctWnmn3XEtoy0bHRa7VaXWSg/1Dt/omfoUdzWpcoKeEurtNQz3Tg43tSsOSTBYY71HE3Frx57Lnuu823yOPjLE0YuUJPbPpA9g+ZhkTsIO0iYQoLgKjbWEfCtmOMxEEUfeDs8AA73YvCG82lDre1BP30BbCQD+YCv4H1DLvTJWo2ig0mxDcdmu/uODzZMVNg0WVbqR5u3NLdsCsshk2yXnsj8nOn6hMMuPSLgx9rnBgev7K6okGyy2xoJT7TGR3UR9qf0HXpySV9XPAt6Sd8vEPZOjr0JrmJfb5jAekAwA4HDQVT4rmFNJQviwIWK+QhGz8Yu0exeNGxFm79Nxa8BOgMafYX+gqyJuB8MgjqQ+W//Fzvo5vsiVZ8vAh5m/AkZzMEJnACZxJcy+CXAJ4ZGE+vbMCcGACP6dctF2C0Iping+TK7DZWKoWggrgf1mgt4nWN2jtvL+hWnbw5y3wiINDlZe7C77+Ro/dYqQVTBVJSvrepMtezbUhX1l4p2J24gwO4IZXrm1ery9UH8rc6DieFjvRXlvF2UnBaXB0LxsSnNLjsVE4cdkp1+VPCcohn2AP+efAv42YD2PFzG2G4EPOUmCEs5ngBx9L0kjWSW9a6cRpln8hCFg6mEkwXbDZX1gWoqp9qi94XZKHv5MEtkiUVxqD03He2c600eattwbtpsUrTSifeVr9ne0rErONzcPl5fO9aGH0tc2d19sHf4RP/2f7w/QBx2t9n/yb16XeaaqZHIeHPTpubwaMSItXuWFvEr7N1VXSIEloBYjS+VqHU3XlLk5eVBruDKVzqFJ/P4e3Yu80veYZGdoAiZJ5imH6eve02WxZssVocMgd9u9iqLQ4NLv8evGd+IoDham+jyKlSfwRAh3kT4gwLOfqDhKjp5rq+vqKiP18damirqKmrD4Vyqssy9eJEthrQ/nz+CHhXxsg2fX9e5v7t7X2dvc20sujsW290er71/LLQuEFgXHOsZ3FG/vq5uuH77IB5LdUR3tbfvinbtKHVvbYvubG3dGW2f8OCq0e6atdXVa2u6Rxc/v7GnJhEMJmp6Nhp5Z3zpd6A/X2F5WywBm40qEH2TTL/gOMgyD/omuSJp0FachtXVFmhGTvtBNwqSsQtSzqlDbevfM23mFWfplveUVW5v6d4b65zvbRmvA61o3FAXGG4hXwGt2PalewJEU9xm/a7d/pp1V1BlyVzXuKkJ1KJ+rDmyscnAH663QpxHc3fwh9T/MTmwoJibpl7RzRn+sMpRWeoGQCVK/aFmfCPHonNqfsiK9oimqaJafMH3uTS35ob/NFdm2qV5NBe7sDj0LLob9UGw2/2wlj3/kGAXquxbvWO5MwUwf15qxDG6taAr9XCwoZq+zPJkFZbuL8OoiNlw1H13ZdhttUtuk80uSw6rHHCX+8s6g1bIkwRO9DqsNotk07z+SkOupXC5FnR3CI2g7YktPg+BrGBUtYscFiAipl87yRBTu5I2M/hby5RDsXIWS0kyy7DhYYSGR4ZHNqyHGQb71vV0d8TaWvyBgO6iX0NpYmXObIu5g1/jXDsajxfUslnQcoUpPXigfIUDcDKnabbdoV02uM15iUNWNFz6tBerrLJZcWq2PcGUzem0zZUT1epQuZKnywGMViaeCD4dIhDjKo4XNbjcJducNvN7szcnOI0X6didsq1Evd24Zl558UVmV9rh+k60D1SiLOHJfU2ZfRtO1YR+Ttm6Qi2G88rAtIDpA+V3GOT/ANPDerDD1dS9ZDWgAmI+jhwzFWgmfW1lfGDmTXhhmNy6+ijz97Uhf5VLu6jeahdXmT2gqYLqdqtCbBXlwfe5VUOZVXdmeHVNwsi8dBq/zlVBPl2ZKGcfm47S7jOUUycBXxU5ajgWXjKnnfUK1PCWOnj8oGi3QkqX2SjapFtUsK3clGK1yxbLnz4uS0wGXUszZHbpQ0gp+raVntTiKbYctVMKsrbnvm31LEcy4F5HHXYF/xt9kZBRP2aXZaDPynLl6FIC74aYu4yd9dIA2Tg0W1NLw1Pe8N/LTox+hMFmxF3mU2fedYMoApqHrj15pWyTn+R7X7vj3C828Kpks/S8cMONL3YKDmv2W4fypT7cR/4R1jF0qCJJOVPGdKgMla7J8yZmnIfkogZq9wW9zq4cuvaaKyB9M4unbn339aL5ieJF+HW/vuPc/1nPG7xCP8MbcTWwY82l+RQL5VSEasgoZDHsQ6rv/4x+cqUZ32lAZuElEm4j/xOFyPhiBotkHH10KYO0BQT5RgbyDXaQTyug334i4k6I+ctRFA1/IaKRZRPn4jCzcdT2Gt7CRa2ck3ajW4t6UwlLsCEIxo6eFV1Ccy9hBz9SqMo2hanyx1bpI3OdgWKVVkGlK1brZN9sEBndCXIsRxWJMs3Qc/q2j8yxb8nGsgZay79mNZSmrTWePfSJrlkNiQMXWy8A693N1lvdX1Cm0U+MCvzFclfeX2iX6S9y6FyxOjog31Z0GqfxMVAhL/tKF7w/e//HjNd26kunTDSp2WizIWTz2srcGlO3rEkq2JJCUWtQ0xScoKfGmSeVgjqOQgzrUBWr+giryLLx3U4fXF7DP0UldD/Zct9u5iLyihDdvYhuHlMumQsG6a2ktcSEX5PkzF02qxX2EB7LpCG2g8o0FtyyQ/yyRbNKivjQ4xanrGLLM0Bz7dJe7qOQY26C6f/deFPq8GGJBL0Kx0v9WBC5US/r4gq7UgZoMxKRgEThtBXSUoxEHh2Ctlkw74c8wjItY4sFjI4kkWl2siPRI2AfPNd+Wc+x42H6MDKeTcQRBwkxJ52+7GWNJ1Mpapf27Nq+FegcrwmEQrUBsEMK8+C5oJTmiMUn6NQ0ssMxt6swn8xHqqt9ta5F2/NxKwUhn7tnc++RvoYo5qrnY/UDob6j/a3DNon3enET9mqNm5tHb9t19sc3DX3gaNvGaFgQZIFo6w6M3vyp8Tv+486GRFtsa2O8rnFPLybPbLtjcsu9c40hi6msOxFONiZu3xWLJLxlIp/5jslSVrbj7PrxGwaOPveebR/cZfd4OJvA2SxV/kOfnP3wv96YudXWvi55rC3Wm5hvz/6b/+y/5J+29/wGuM1eEf7TY3/1fnr/zvqzT2duW6o1Bfkj0KRvNo0f/W6O/b8BTFth/Jum4PL/PcD4kevIBlSLnqf/7mPpRtZzG6pEf8EfeQ/aS96Hmi86/hz7PvrSc3S8McyfjV8M8HvkEvh9c5W1X3/r8CH3G3MR1+XNyXVn4b//5nAgmYvT+F/xI9uW8Sf3XJoW0ooCb3r+PfQM6CJjX/vP0yc2/0eQzj1Dv7tc0b8XVZMm+i3hZcxxK/32b0XfLhT5i8poF9pEyMXXvBQ+JPyfiyueRZXk8CXW76DvRFf8nmffiLy1PCphUa/xe6WgfrH9+34DL9K/Cn6XWmfrX1b2l6MbOR3A77w0Lfi7kIW+Gdlupe9LL7F255vj3ZumTYV4+NcX2hyIA6tX1avVaHhpdXlxHzb8L4lf6IdBxnFInEwwNk7MKAJ7qJoEUZyUwZ+AekgUDZI6dsb0/9fvMaDpqWJ+kztQKXqYnYkU/76CwkRCZnIX5J+X4v+1KAp/5Rf0v/sNnptCXvjzAz5rVuL0X/3D/wx5EeWNhvq4Zy/7sVr460Uz6ByUb/95Bdfi00XlyZUFkoE3U0bJ54rK73OFW3NZ5QCUO1cpr3Kv8vUXKYffovIQLabyFeWWi5ZHi8rrb64IHcL78+UF0bNK2ZEvz/55xTxofqCwWCqKyvVvsvxUmikq/z1fvnS5xcqzErqgnLeelx0XKVveonJePq/UKx9eUV5fvdjmVpTPvcnyK/uGfLnD/tsLiyNWUCagHMiXTzleUJvV8+rr2lHtZWeF8w7nr/5SxdXqOmUUt+xuzZd73N9wv15cPI2euXx574ry8RKtZLTkg29Reb7k+VL5ckuZRLNlyE+vhIz6g4h+0V2PutF7wFp+UPFAm+bSZnQAMnPMW8D6aixLp3WMNGgZdYJsOJCtc6gDt2brPKrGV2brJlSO35utC9D/d9m6DbXjr6IBdAwdRzegE+gKdBAdQieRD+x8M2qB4kPboGce7pvRNTC+H12Frkaz6Ciag74JeOYY4D8P/fSpPoA5CfDHoP9qaNey2U7C7FeD12uCchDmoBDXoH2oEZ46ho5ArzHfCZjnOohajkP7IDoMkEehdh0bbVpl/WG4H4G+w4B7HQrDetdlZ/ehLTDX1fB3Al0LV4rrMKx1lGE5zp4DmnwVF87qqwS8LlyLzncQeg9D+wRqA5hmVrqBBwfQEEB0r/JUZMVzq/GwGGIHw/lqgKLY+gpWeuPZc7w2OH01wFKJHoe+q2GWqxmnGplsDsL4JuAIPZVPPoq+umVyAeM7Umls/A+Tji8gsf+h9W1VHKqn1Ue6zCGzZubMRmtQaBYqBNaS+h+3PWl5kn8SFMoCbaX/cZRghbU5NLgQwLdvnkwnbp9c4OYGF0K09UXzzaB+idv3b5ukICn4PdJjrjW7zJxc/yheeleaf98CQYMPmuYENDj4/wAEGy2bCmVuZHN0cmVhbQplbmRvYmoKMjQxIDAgb2JqCjw8L1R5cGUvT2JqU3RtL04gMzEvRmlyc3QgMjM3L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTU0Nj4+CnN0cmVhbQp42q1XbW/bNhD+vl/Bb01QBOLb8WUIDCT10gbr25J02aDqg2oprjDHMiS5a/79HpJy0KR25gINopwo3h0f3nM8XoRgnEktmdFMhF+FEb5IyRSEs0wppkgwZZgWxJRn2nroKEZ4gqHADDHjONOOWa0ZtB130NHMWQk95qFAlgnOPTMc0oZlDBNCWWYUJIUPxIRUkkksIhQnJiE81JkwWF4SXq0XeNFMCovFmDQGYw1AjoCBKbiGElNSAgCcKi3hFRPGanZ8nF3UfbvuZnUP19j5RXZ1t6qz9+U8/Onq5RC3HyZetMsB4z4XMoyLyeSXHAHAKxMuCR+F5EmIJGQSKgmdRLKTJgkbHf7yAI70e8KRcfEiO1ku26GP3GEMdHB3b91Dfw1rde9GJf+/N1WfJ2wiARZ6s70HeJTchUc9xKPEdnva137H+m5fe7vVXos97VN8ix0B1NsDmChXKZAq0ZoUvgeidwHRj4Co7fZ2X3uz1Z74vvbb8ZPa057kjwcyJW+oH1Gkc0XbM4rMLiD0CAhtt/f72rut9kbuaW/u8ecmnX9DW068sfv6M49OvHnixG+PMyUcZBOclL5GPUWYoGQ6FqDNwdnwvoFZZG/qqilP26950DOoltbL0emLri6Htjt4XV7Vf7F/m+Ez+4x1uq6+OcyummFRH9/UNzeca885aTwK7xUk59zij5F4Zngwb8LcOK+hq+UkO1kPn9tudEJBGdJiEtcRN3Bg8Q2/XN8k5+GJY4v5Ki2g3SR737XVelZ3B1+rL82qurn9yj4eSC4lt4J/PDxMW2na5bQc6oPpr5gycO6EIiXEc66ecf7sMO363apensyCcqq02VkzFDG2b9qqzj709bv1sGiWCHX4+Lr8VC962L1d3/Y5x8tlNp1MZHzpJhO9+YKgZm/L23B32VTdNn7wISVnJPCe+sjpi3IoF+08ZKPOjfKFkrkJl6W0hea5FVRon5OVhZU5IcmNN4ULE75wlEtLheCYIQlpgkYhhMkdpoVwuVWYV1AnjI3JDVeQPjfOFsLanDyk57mRBtLmllMhpcgN7m+vVSGVwylxhQyrA4t0WMPxAjd5rkXoDhTeHb4ZIFe5VJBaAwd2oi3wQZdM7qWEhB7QK4v1hMb2PKoqpLC5drLQEmPuC62AC/i0EXHH1ji8u/TNOujCBjgMKcRGBF8o8mhsUOkJF7xFd0PogggFCzgYORfeCyLgC60NYkbAYnzoanyB/eQKuIpIgbaJAsGi/xTpQAFQRAoMKKBIgeSRAuIIPSwjFQiPGikAg5EC6RIFxkQKQggiBQhNpCBQFijgOlEgVKIAZcnDRkqLOWwNFCY69EiHTnSQiXQg1ZE1PNEBsJEO6EQ6kAaRDjXSIUY6rIt0EHYU6FCOEh2gL9Ch1EhHGAc60AdZpJo2gTKEPFATKLGYdxo080gNGRupgV9cw2hGUU1x/rEH7AM3GaEtIBHoQeeJMAdqBLpZ4XWiBhVROFGQ0bnwPtJq4JOsRkcBuq0eaeOQDl2KZ+GBffSB0xNTymAPqCkFak3ucYaK+1p6hvKdXa4/DfEQnk/DOEzI7LTs6zh7evH2/OXL53+sm9k/fbmsjk7bRRUNp3U/65oVamfsbuN1cD69vOuH+vZ8edPGi2Te9EN3d3BStZ/qw+xdV9Vds5wfnFco/81wd4jVV6tFfRtuA47aMb0GfSq7jp306PKqfXk+fVOuso3VN7fBQyDZST8LntDE8yx8DoMjuMouAepPNNmEWrN6VTfzz6PWyZf5dVOh6IOd6O00XBNH4JMdKY62X6GZRQarIjtHkWpmJ8v5omY8O1uUc5QxI0V0f4d74hi1bdn29THf/Dj+4GeCHYY1QoXcEdkQwho3Y2owovZZs6jxHwc9bqIfsBe+8P+j7bflrK0Q//tIHr0aw1SVWKcNN3lqVbOr9sOygXYNcu1TC29Pm+uL6d/T62/WRyqsF2X3XeaMrdvPyRwuY+bon585zu5OHK2/SRxlLezw35xQuBnwz+OOxDE7c4aeyJmdYb1PG/oubcwPpM1O//tkjtiSOm5c/D+LalRwCmVuZHN0cmVhbQplbmRvYmoKMjU3IDAgb2JqCjw8L1R5cGUvWFJlZi9JRFs8ZWMwNjIyMzM3MTAwMjIxOTlkYTExMGFlMjA5NDk5ZmQ+PGVjMDYyMjMzNzEwMDIyMTk5ZGExMTBhZTIwOTQ5OWZkPl0vUm9vdAoxIDAgUi9JbmZvIDIgMCBSL1NpemUgMjU4L1dbMSAyIDJdL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNTUwPj4Kc3RyZWFtCnjaLdRXU1NBGIDh/UIJHJBADKZAAjZURCxgQY3Ye0ExoGJv2DuoEUVBxd57RcSGBTtiF9ulv8Af4YwzXngRz3vWm2f23T1zLnZmP6VUJGJTv1QHSLUpQ30X5VBKjCql2EsDrzgbSMM8KIzoAyUuv94T0sbKxioA6WQUREMMxIId4iAeDEiARHHV6v+14wfR4v6hM4mMEU+NTgcZK97/p8mkXXx/daaQ8RJo0ekkDcn4o7M9mSBZlTpdZKJkt+lMJZMkt1SndSUOybPrdJPJUhDU6SGdrLzgk2CFPkiDGbALJsFkmALWvcyDaTAd5sMC8MNCWASLYQkshQAsg1UwEUpgKmRAJhTBciiHFbASOsJqWAMDYRAUQCcohpkQglKYBZ1hNsyBMpgLW6ACukBXqIStsA22QxiyYAdUwU6oht3QDfZADfSFfpAH3SEf+sMAWAuDoQdkwxAYCkEYBoXQE4bDCBgJo2Ad5MBoGANjYRyMh14wAdbDBtgIm2Az5EJv6AO18A32w17YB21wCOrgAByEw3AEPsEFOArH4DicgJNwCk7DGTgL5+A8XIaLcAnq4QpchWtwHRrhBjTATbgNt+Ae3IG78ACa4D68hYfwCJrhMTyBp/AMnsMLeAkt8Apa4TW8gY/wDt7DB/gKn+EL7816sFHSmK9HkDV44sAaGdbrTpGin+ZsKk7Xn/jALSFzfEnot97zg0fC5eZeuNWkqV6pf0ZLjKsKZW5kc3RyZWFtCmVuZG9iagpzdGFydHhyZWYKNDM2ODAKJSVFT0YK</File>
    </Filelist>
</otrs_package>